iOS 新手引导页图片适配及其尺寸大全
早期新手引导页只需要几张图片就可以解决了,随着屏幕尺寸的的越来越多,新手引导页的尺寸适配起来越来越麻烦,否则就会出现尺寸不匹配,图片被拉伸的情况
目前应该是有2种方法来解决这个问题
方法1:
根据每款手机的分辨率来选择需要的图片尺寸
if(分辨率1){
图片1
}else if(分辨率2){
图片2
}else if(分辨率3){
图片3
} .....
这种方式可以确实可以解决问题,就是太麻烦,太多的ifelse逻辑代码
方法2:
使用Assets.xcassets来管理引导页图片,将指定分辨率的图片放入指定的位置,使用时只需要拿到图片名,图片会根据分辨率自动选取匹配的图片 有点像@2x @3x图片自动管理机制
具体实现有以下几个步骤:
1.创建一个LaunchImage类型的图片集合
2.将创建的LaunchImage.launchimage从命名为first_open_01.imageset
3.根据分辨率将指定图片拖入到指定位置

4.由于有引导页有多张图片,可以使用同样方法创建多个first_open_02.imageset,first_open_03.imageset,first_open_04.imageset等

对应尺寸这里绘制了一张表(markdown格式):
| 尺寸 | 分辨率 | scale | 型号 | 对应机型 |
|---|---|---|---|---|
| 3.5'' | 640x960 | @2x | 2x | iPhone4及其以下 |
| 4.0'' | 640×1136 | @2x | Retina 4 | iPhone5/iPhone5s/iPhoneSE |
| 4.7'' | 750×1334 | @2x | Retina 4.7'' | iPhone6/iPhone6s/iPhone7/iPhone7s/iPhone8/iPhone8s |
| 5.5'' | 1242×2208 | @3x | Retina 5.5'' | iPhone6P/iPhone7P/iPhone8P |
| 5.8'' | 1125×2436 | @3x | iPhone X/iPhone XS | iPhoneX/iPhoneXs |
| 6.1'' | 828x1792 | @2x | iPhoneXR | iPhoneXR |
| 6.5'' | 1242x2688 | @3x | iPhoneX Max | iPhoneX Max |
swift版本引导页代码如下:
//
// HXQNewFeaturesVC.swift
// t1
//
// Created by Tiny on 2018/10/25.
// Copyright © 2018年 hxq. All rights reserved.
// 版本新特性
import UIKit
class HXQNewFeaturesVC: HXQBaseVC {
var scrollView = UIScrollView()
lazy var skipBtn:UIButton = {
let skipBtn = UIButton()
skipBtn.backgroundColor = UIColor(white:0, alpha: 0.3)
skipBtn.setTitle("跳过", for: .normal)
skipBtn.setTitleColor(.white, for: .normal)
skipBtn.titleLabel?.font = UIFont.systemFont(ofSize: 14)
skipBtn.layer.cornerRadius = 15
skipBtn.layer.masksToBounds = true
skipBtn.layer.borderColor = UIColor.white.cgColor
skipBtn.layer.borderWidth = 1.0
skipBtn.addTarget(self, action: #selector(jumpToRoot), for: .touchUpInside)
return skipBtn
}()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
func setupUI(){
scrollView.backgroundColor = .white
scrollView.showsHorizontalScrollIndicator = false
scrollView.isPagingEnabled = true
scrollView.bounces = false
view.addSubview(scrollView)
scrollView.snp.makeConstraints { (make) in
make.edges.equalToSuperview()
}
//5张图片
var last:UIImageView? = nil
for i in 0..<4 {
let imgView = UIImageView()
imgView.image = UIImage(named: "first_open_0\(i+1)")
scrollView.addSubview(imgView)
imgView.snp.makeConstraints { (make) in
if last == nil{
make.left.equalToSuperview()
}else{
make.left.equalTo(last!.snp.right)
}
make.width.equalToSuperview()
make.height.equalToSuperview()
make.top.equalToSuperview()
}
last = imgView
}
//更新scrollView contentSize
scrollView.snp.remakeConstraints { (make) in
make.top.bottom.left.equalToSuperview()
make.right.equalTo(last!.snp.right)
}
//设置跳过button
view.addSubview(skipBtn)
skipBtn.snp.makeConstraints { (make) in
make.top.equalToSuperview().offset(30)
make.right.equalToSuperview().offset(-30)
make.size.equalTo(CGSize(width: 60, height: 30))
}
}
@objc func jumpToRoot(){
//拿到当前的delegate
guard let window = UIApplication.shared.delegate?.window else{
fatalError("获取window失败")
}
window?.rootViewController = ViewController()
}
}
转载请标注来源:https://www.cnblogs.com/qqcc1388/p/9895346.html
iOS 新手引导页图片适配及其尺寸大全的更多相关文章
- ios开发之--新手引导页图片适配方案
1,图片适配,最早以前是自己命名规范,例如@1x,@2x,@3x等,3套图基本上就够用了 2,在iPhone X之后,需要适配的图就多了,因为分辨率增多了,屏幕尺寸也增多了 3,尺寸 :640*960 ...
- 关于图片适配不同尺寸的image View(实战)
分享人:广州华软 佐罗 一. 前言 在前端开发过程中,设计稿中往往只提供一张图片,但是app内需要用到的尺寸各种各样. 同时图片不仅是信息的直接表达,也会为网站起到美观点缀的作用,图片的变形.过分裁切 ...
- iOS新手引导页的实现,源码。
/*.在Main.storyboard中找到,ScrollView和PageControl并添加到ViewController中. .在ScrollView中添加ImageView,新手引导页有几个图 ...
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...
- iOS 实现启动屏动画(Swift实现,包含图片适配)
代码地址如下:http://www.demodashi.com/demo/12090.html 准备工作 首先我们需要确定作为宣传的图片的宽高比,这个一般是与 UI 确定的.一般启动屏展示会有上下两部 ...
- iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制
iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...
- iOS WKWebview 网页开发适配指南
iOS WKWebview 网页开发适配指南 微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配.如有问题,可参考文末联系方式,向我们 ...
- iOS杂谈-图片拉伸的实现
如上图是一个按钮的背景图,在Android上,很多图片资源都是类似这样子的,但是由于按钮的高度及宽度与图片的世纪尺寸不同,所以需要采用9patch来实现拉伸处理, 可参考:http://www.cnb ...
- iOS系统下 的手机屏幕尺寸 分辨率 及系统版本 总结
今天 我对iOS系统下 的手机屏幕尺寸 分辨率 及系统版本做了一次系统总结 供大家参考. 首先 是系统: 随着iOS 系统不断升级,现在已经到iOS7.0了, 并且TA有了很多新变化,最震撼的 ...
随机推荐
- saltstack之mount和umount的用法
线上很多服务器都需要挂载存储上的公共目录,并实现开机启动(/etc/fstab),比如web的静态文件共享目录,日志远程集中收集等. 一.批量挂载部分. 1.在node1上配置nfs服务器,有关nfs ...
- stylus使用文档总结:选择器+变量+插值+运算符+混合书写+方法
建立好项目后我们来安装stylus npm install stylus stylus-loader --save-dev 这样就安装上了stylus. 接下来就可以使用了,使用方式分两种.一种是在. ...
- 解决Oracle在Linux下Listener起不来,error 111错误
近来发生一个问题有点头疼,在linux上的Oracle数据库突然无法访问 主要报错如下: 基于本人的走歪路经验,分享一下我的解决思路: 首先,最直观的一点,监听器起不来,是不是数据库本身就没起来 se ...
- Python Pygal绘制世界人口地图
数据集可在 https://datahub.io/JohnSnowLabs/population-figures-by-country 下载 #coding=utf-8 import json fro ...
- 该登录名来自不受信任的域,不能与 Windows 身份验证一起使用。
使用sql2008 远程连接数据库的时候遇到了这个问题,我用的是ADO.NET 实体数据模型,有app.config和web.config 解决了好久,因开始以为是sql的权限问题.后来解决了只需 ...
- js文件加载执行顺序
转自:http://blog.163.com/water_down/blog/static/170276590201111711243458/ <script type="text/j ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)如何在TwinCAT Scope中做变量监控
为了更好的监控变量,可以打开ScopeView即变量监控器 添加一个Scope View,然后右击添加一个Channel 我们在之前登录的时候可以选择Run-Time的端口(默认是801) ...
- java中接口与抽象类的区别
接口和抽象类的共同特征如下: 接口和抽象类都不能被实例化,位于继承树的顶端,用于被其他类实现和继承. 接口和抽象类都可以包含抽象的方法,实现接口的类或者继承抽象类的类都必须实现这些抽象的方法. 区别: ...
- java中==与equal()的区别
==和equal()都是用来判断两个变量是否相等的. (1)如果两个变量是基本类型变量,且都是数值型的(不一定数据类型相同),只要是值相同,将返回true; (2)如果两个变量是引用型变量,只有它们指 ...
- java中,重构、重载、重写
1.什么叫重构? 答:重构(Refactoring)就是通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性,系统发展到一定阶段后,使用重构的方式,不改变系 ...