几行代码帮你轻松完成ios屏幕适配
来源:互联网 发布:经典的爱情电影 知乎 编辑:程序博客网 时间:2024/06/16 15:25
做ios也有几个月了,原先是做安卓的,但是来公司的时候ios正好离职,所以需要学习ios的知识,但是因为一边要忙工作,所以也没用很多时间去扎实学习c基础和oc比较深层的东西,也算是一边学习一边学习ios开发了, 这几天也稍微闲下来了,所以写博客帮助 做ios没多久的朋友们,一起进步 在做屏幕适配的时候发现ios的第三方适配框架masonry上手没那么快,而且每个控件都要写挺多代码的,所以就在网上找有没有比较简洁的适配代码呢?! 后面找到不错的很简洁的代码 在项目中也用到了,还是很不错的 接下来给大家详细讲解下 。
#import <UIKit/UIKit.h>@interface AppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;@property float autoSizeScaleX;@property float autoSizeScaleY;@end
@interface AppDelegate ()#define ScreenHeight [[UIScreen mainScreen] bounds].size.height#define ScreenWidth [[UIScreen mainScreen] bounds].size.width@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate]; if(ScreenHeight > 480){ // 这里以(iPhone6)为准 myDelegate.autoSizeScaleX = ScreenWidth/375; myDelegate.autoSizeScaleY = ScreenHeight/667; }else{ myDelegate.autoSizeScaleX = 1.0; myDelegate.autoSizeScaleY = 1.0; } return YES;}
**这里一定要在didFinishLaunchingWithOptions里执行 注意
因为iPhone6屏幕的宽度和高度是375和667, 因此当屏幕尺寸大于iPhone6时, autoSizeScaleX和autoSizeScaleY即为当前屏幕和iPhone5尺寸的宽高比, 如果手机为Iphone6那么屏幕比例为1,如果为Iphone6s,屏幕比放大,Iphone5就屏幕比缩小;
**
好了接下来我们自定义一个设置尺寸的方法
CG_INLINE CGRectTS_CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height){ AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate]; CGRect rect; rect.origin.x = x * myDelegate.autoSizeScaleX; rect.origin.y = y * myDelegate.autoSizeScaleY; rect.size.width = width * myDelegate.autoSizeScaleX; rect.size.height = height * myDelegate.autoSizeScaleY; return rect;}
这个直接写在Macros文件里就好
接下来也顺便贴上文字适配的代码 ,我们知道在所以所有屏幕里设置的字体大小都是不变的,在Iphone6你设置一个20大小的font,在iphone5里看起来就特别大,所以字体也要进行适配
#define MainScreenWidth [[UIScreen mainScreen] bounds].size.width#define font(R) (R)*(MainScreenWidth)/375.0
因为美工给的标注是Iphone6的,所以
myDelegate.autoSizeScaleX = ScreenWidth/375; myDelegate.autoSizeScaleY = ScreenHeight/667;和 #define font(R) (R)*(MainScreenWidth)/375.0
都是根据iPhone6来设置的 如果美工给的标注图是其他尺寸的话,把上面提到的三个参数全部改为对应的尺寸,好的接下来演示一下在不同屏幕适配了的效果
使用方法
设置frame TS_CGRectMake() self.btnForgetPassWord=[UIButton alloc]initWithFrame:TS_CGRectMake(161, 499, 54, 12);设置字体大小 font() [self.btnForgetPassWord setFont:[UIFont systemFontOfSize:font(12)]];
iphone6使用效果
iphone5使用效果
iphone6s Plus使用效果
**我们发现在三个机型上图片都适配成功了,而且字体在Iphone5和Iphone6s plus上也进行等比例的放大和缩小了 但是这个适配也是有缺陷的 就是图片的边缘比较薄的话 在iphone5上偶然会出现边缘比较虚 比如这种图 其他设备上正常显示
下面是Demo下载地址,如果有问题 可以在下面留言 谢谢。
Demo下载
- 几行代码帮你轻松完成ios屏幕适配
- 几行代码帮你搞定屏幕适配
- 几行代码帮你搞定屏幕适配
- iOS中帮你轻松code之可复用代码块
- 使用iMindMap,帮你轻松完成绩效辅导
- 轻量级框架轻松帮你实现ios页面布局(一行代码完美实现横竖屏显视)
- 30个要点帮你完成java代码优化
- 批处理指令——at指令,轻松帮你完成计划
- 几点建议帮你写出简洁的JS代码
- 几点建议帮你写出简洁的JS代码
- 几点建议帮你写出简洁的JS代码
- 几行代码,轻松让你的界面与众不同(for vb)
- 几行代码轻松让你的界面与众不同(for vc)
- 九大Java性能优化工具帮你轻松搞定Java代码
- 九大Java性能优化工具帮你轻松搞定Java代码
- 看Siri如何帮你轻松理财
- Kinsight:轻松帮你查找家居物品
- Composer帮你轻松管理PHP包
- windows下安装php扩展
- Pyhton加载Meterpreter Web_delivery代码
- 波司登全国超千家门店,销售状况如何实时监控?
- MySQL学习笔记
- 你所不知道的JSON
- 几行代码帮你轻松完成ios屏幕适配
- nginx安装与使用
- 关于pycharm ImportError: No module named caffe
- Dubbo--简单介绍和使用(Simple)
- 晒往期云栖大会的照片或感想_赢2017杭州云栖大会门票
- 九度oj1440
- Yii
- 我与ActiveMQ的恩怨情仇
- CarbonData 使用性能测试