本文将带你了解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手机布局实现方案...相关推荐

  1. ios 代码设置控件宽高比_iOS基于代码按比例约束方法进行屏幕适配

    还记得刚刚开始学习iOS的开发的时候,简简单单的小控件练习,我总是习惯性的写死Frame,后来知道了屏幕适配,添加约束这样才能使UI更好的展示在屏幕上,Objective-C中的Masonry,Swi ...

  2. ios 代码设置控件宽高比_#iOS 开发实用技巧# Masonry 控件宽高(不同控件之间宽高比)比设置方法...

    Masonry 项目中我们实用 Masonry 自动布局,可能需要设置控件的宽高比,需要记录一下这个方法. 一句代码搞定: 注意这里需要设置的是控件的宽高比. make.width.equalTo(s ...

  3. ios 代码设置控件宽高比_iOS--利用比例纯代码适配屏幕大小

    首先说下让自己的程序支持iPhone6和6+,第一种使用官方提供的launch screen.xib,这个直接看官方文档即可,这里不再多述:第二种方法是和之前iPhone5的类似,比较简单,为iPho ...

  4. ios 代码设置控件宽高比_用宽高比调整UIImage的大小?

    我知道这很老了,但是感谢那篇文章-它使我从尝试使用比例尺重定向到绘制图像.万一对任何人都有利,我做了一个扩展类,我将在这里进行介绍.它允许您调整图像的大小,如下所示: UIImage imgNew = ...

  5. ios 代码设置控件宽高比_ios-自动布局以保持视图大小比例

    我正在努力实现以下目标: 我的xib中有2个视图,需要使边缘(两侧和顶部)保持20像素 需要调整大小的2个视图的大小不同 它们必须相隔20像素 它们的宽度需要相对于父视图的宽度保持不变 我阅读了有关执 ...

  6. iOS一套代码适配所有iPhone手机布局实现方案

    iOS一套代码适配所有iPhone手机布局实现方案 本帖主要是讲述一套代码适配所有iPhone手机布局解决方案.要点是了解原理和思想. 多个项目采用了这种布局方式,感觉良好,实际情况还是要看看你们UI ...

  7. android设置屏幕高度和宽度设置,Android手机的屏幕宽高度和代码设置控件的宽高度...

    1.Android手机的屏幕宽高度 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); int w ...

  8. Android动态设置控件宽高和padding

    在开发过程中我们经常需要动态设置控件的宽高和padding.以TextView为例.如下: 布局代码 TextView的默认宽高为包裹文字,添加了一个背景颜色设置参数后更直观看到效果 <?xml ...

  9. android 获取控件高度_安卓开发入门教程UI控件_ImageView

    什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...

最新文章

  1. 突然想自己做个平衡车了
  2. aida64内存稳定性测试_250元就能买到16GB内存 这背后究竟是道德的沦丧还是人性的扭曲?...
  3. 史上最惨锦鲤即将来袭!奖品堪比5年高考3年模拟!
  4. MySQL(三)表记录的更新操作
  5. 快应用不会取代 App,未来将赋能 IoT!
  6. SpringBoot 集成log4j2
  7. 手机腾讯网mt2.0增量更新算法优化小记
  8. PowerDesigner16使用方法
  9. WIN10网络共享文件夹实战
  10. 一文梳理等保2.0与工业控制系统安全扩展要求
  11. 使用Workrave帮助防止腕管问题
  12. HC05蓝牙模块AT指令与手机蓝牙控制STM32板载LED
  13. oracle的sql硬解析和软解析,[ORACLE]oracle SQL执行过程 软解析(soft prase)硬解析(hard prase)以及 Soft Soft Parse...
  14. 小荷尖 - 发现更优质的企业服务
  15. Android开发循序渐进实例5--网络访问例子
  16. kafka问题 Aattempt to heart beat failed since the group is rebalancing
  17. vue 使用iconfont图库
  18. Python处理大学英语四级考试数据(Excel文件)案例一则
  19. redhat系列镜像下载
  20. VS在windows10输入中文显示问号的问题

热门文章

  1. java设计模式--2.原型模式
  2. js解析emoji表情
  3. mybatis当参数为实体类对象时找不到参数
  4. mac m1系统安装安卓手机模拟器
  5. xxl-job使用oracle数据库实现
  6. 底层开发崇拜_我应该何时加入品牌崇拜
  7. batchnorm 合并
  8. Citrix小贴纸--PVS Database迁移方法
  9. 鸿蒙之境的称号,神都夜行录鸿蒙之境全关卡阵容配置汇总
  10. 模糊推理学习笔记及例题