ios 代码设置控件宽高比_IOS开发入门之iOS一套代码适配所有iPhone手机布局实现方案...
本文将带你了解IOS开发入门iOS一套代码适配所有iPhone手机布局实现方案,希望本文对大家学IOS有所帮助。
iOS一套代码适配所有iPhone手机布局实现方案
本文主要是讲述一套代码适配所有iPhone手机布局解决方案。要点是了解原理和思想。
多个项目采用了这种布局方式,感觉良好,实际情况还是要看看你们UI能不能接受这种方式
主要思想就是画面根据屏幕的尺寸动态的改变所有控件尺寸的大小,实现所有屏幕的适配
先展示效果
手机放大到一样大小效果
所有手机显示效果几乎是一样的
手机顺序为iPhone 5s iphone 6s iphone 6s plus iphone X
画面截屏效果
画面是根据屏幕大小动态去改变的,大屏幕的等比例放大,小屏幕的等比例缩小
实现思路
如何用一套代码实现在不同屏幕中动态缩放,达到在不同种屏幕效果一致呢?
首先我想到了我们现在适配的iphone的屏幕比例都是16:9的屏幕(当时想的时候还没有出iPhoneX,所以没有想过iPhoneX),如果UI设计师给你的是 750*1334的设计稿(就是iPhone6手机屏幕尺寸的设计稿)给你的时候,你就可以先写只适配iPhone6的,只要在iPhone6手机上显示跟设计稿一致就可以了。在做完iPhone6的页面之后,就要考虑其他手机适配的问题了,其他手机的屏幕都是16:9的屏,也就是说iPhone6 要适配iPhone 6 plus就只需要所有空间的大小,位置全部放大相同的倍数就可以适配plus了,同理如果要适配iPhone5 就是将所有控件缩小相同的倍数就行了。
下面举例:
如果在iPhone 6 手机上面100点宽高的头像,已经写好了,在iPhone6 plus上的高度就应该是110.4,如果说在iPhone6手机上面上下边距是10,那么在iPhone6 plus上是11
宽高比:375 :414 = 100 : X X = 110.4
边距比:375 :414 = 10 :Y Y = 11
上面的看懂就很简单了
每当我设置frame的时候,不同的屏幕设置成不同的值就行了。每次设置一个值得时候可以先经过我们的一个方法,动态的把这个值放大和缩小相同比例的数值。下面是示例代码:
关键示例代码
func CGFloatAutoFit(_ float:CGFloat)->CGFloat {
let min = UIScreen.main.bounds.height < UIScreen.main.bounds.width ? UIScreen.main.bounds.height :UIScreen.main.bounds.width
return min / 375 * float
}
上面的代码就是精华,没有什么难度,你也可以自己写。意思就是你传一个float数值过来,首先判断手机屏幕长宽最短的值(因为有时候是横屏的),拿到宽高最短的直接和375比算出真实的要缩放的值。应为我们UI设计师给我的都是iPhone6 的设计稿所以我比的是375(竖屏下手机的宽度)。
手机宽度 : 375 = 缩放后大小 :设计稿大小
布局实现方案调整
看懂了上面,自己有想法的下面可以不用看了
如果要使用这种思路,在设置控件的位置和大小时就必须要过我们自动缩放的一个方法。
我们这里是直接用frame布局(直接设置长宽高,很土,但是很好用)
控件布局方法原来
self.line.x = 10
self.line.y = 10
self.line.height = 50
self.line.width = 50
self.scrollView.addSubview(self.line)
现在方法
self.line.x = CGFloatAutoFit(10)
self.line.y = CGFloatAutoFit(10)
self.line.height = CGFloatAutoFit(50)
self.line.width = CGFloatAutoFit(50)
self.scrollView.addSubview(self.line)
很简单,设置值得时候过一下我们的方法就行了
文字设置方法
?
1
self.doctorDescLabel.font = UIFont.systemFont(ofSize: CGFloatAutoFit(15))
文字大小也要动态改变大小
图片设置大小
不能使用sizetofit方法了,直接按照比例写死,如果所设计稿给你的是100px,你就直接CGFloatAutoFit(50)
左右边距设置
如果说你想左右边距距离10
label.x = CGFloatAutoFit(10)
label.width = self.width - CGFloatAutoFit(20)
页面案例
//
// VXXOtherUserInfoViewController.swift
// shikee
//
// Created by 小星 on 2017/11/21.
// Copyright ? 2017年 shikee. All rights reserved.
//
import UIKit
import ChameleonFramework
import STPopup
import SwiftyJSON
import IQKeyboardManagerSwift
class VXXOtherUserInfoViewController: VXXBaseViewController,UIScrollViewDelegate,PopPasswordDelegate{
var scrollView = UIScrollView()
var titleLbl = UILabel()
var shareBtn = UIButton()
var moreBtn = UIButton()
var navigationView:UIView?
var backBtn = UIButton()
let headerTopImgView = UIImageView()
let headerBottomImgView = UIImageView()
let headerImgView = UIImageView()
let nameLabel = UILabel()
let scoreBtn = UIButton()
let descLabel = UILabel()
let hospitalLabel = UILabel()
let line = UIView()
&nb
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
ios 代码设置控件宽高比_IOS开发入门之iOS一套代码适配所有iPhone手机布局实现方案...相关推荐
- ios 代码设置控件宽高比_iOS基于代码按比例约束方法进行屏幕适配
还记得刚刚开始学习iOS的开发的时候,简简单单的小控件练习,我总是习惯性的写死Frame,后来知道了屏幕适配,添加约束这样才能使UI更好的展示在屏幕上,Objective-C中的Masonry,Swi ...
- ios 代码设置控件宽高比_#iOS 开发实用技巧# Masonry 控件宽高(不同控件之间宽高比)比设置方法...
Masonry 项目中我们实用 Masonry 自动布局,可能需要设置控件的宽高比,需要记录一下这个方法. 一句代码搞定: 注意这里需要设置的是控件的宽高比. make.width.equalTo(s ...
- ios 代码设置控件宽高比_iOS--利用比例纯代码适配屏幕大小
首先说下让自己的程序支持iPhone6和6+,第一种使用官方提供的launch screen.xib,这个直接看官方文档即可,这里不再多述:第二种方法是和之前iPhone5的类似,比较简单,为iPho ...
- ios 代码设置控件宽高比_用宽高比调整UIImage的大小?
我知道这很老了,但是感谢那篇文章-它使我从尝试使用比例尺重定向到绘制图像.万一对任何人都有利,我做了一个扩展类,我将在这里进行介绍.它允许您调整图像的大小,如下所示: UIImage imgNew = ...
- ios 代码设置控件宽高比_ios-自动布局以保持视图大小比例
我正在努力实现以下目标: 我的xib中有2个视图,需要使边缘(两侧和顶部)保持20像素 需要调整大小的2个视图的大小不同 它们必须相隔20像素 它们的宽度需要相对于父视图的宽度保持不变 我阅读了有关执 ...
- iOS一套代码适配所有iPhone手机布局实现方案
iOS一套代码适配所有iPhone手机布局实现方案 本帖主要是讲述一套代码适配所有iPhone手机布局解决方案.要点是了解原理和思想. 多个项目采用了这种布局方式,感觉良好,实际情况还是要看看你们UI ...
- android设置屏幕高度和宽度设置,Android手机的屏幕宽高度和代码设置控件的宽高度...
1.Android手机的屏幕宽高度 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); int w ...
- Android动态设置控件宽高和padding
在开发过程中我们经常需要动态设置控件的宽高和padding.以TextView为例.如下: 布局代码 TextView的默认宽高为包裹文字,添加了一个背景颜色设置参数后更直观看到效果 <?xml ...
- android 获取控件高度_安卓开发入门教程UI控件_ImageView
什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...
最新文章
- 突然想自己做个平衡车了
- aida64内存稳定性测试_250元就能买到16GB内存 这背后究竟是道德的沦丧还是人性的扭曲?...
- 史上最惨锦鲤即将来袭!奖品堪比5年高考3年模拟!
- MySQL(三)表记录的更新操作
- 快应用不会取代 App,未来将赋能 IoT!
- SpringBoot 集成log4j2
- 手机腾讯网mt2.0增量更新算法优化小记
- PowerDesigner16使用方法
- WIN10网络共享文件夹实战
- 一文梳理等保2.0与工业控制系统安全扩展要求
- 使用Workrave帮助防止腕管问题
- HC05蓝牙模块AT指令与手机蓝牙控制STM32板载LED
- oracle的sql硬解析和软解析,[ORACLE]oracle SQL执行过程 软解析(soft prase)硬解析(hard prase)以及 Soft Soft Parse...
- 小荷尖 - 发现更优质的企业服务
- Android开发循序渐进实例5--网络访问例子
- kafka问题 Aattempt to heart beat failed since the group is rebalancing
- vue 使用iconfont图库
- Python处理大学英语四级考试数据(Excel文件)案例一则
- redhat系列镜像下载
- VS在windows10输入中文显示问号的问题