美文网首页
iOS开发中关于对Xib的页面进行屏幕适配

iOS开发中关于对Xib的页面进行屏幕适配

作者: 梁森的简书 | 来源:发表于2018-09-12 09:49 被阅读575次

本人开发中是不用Xib的。

不用Xib的原因

1. 维护成本高

当页面布局更改之后修改页面的时间完全高于修改代码的时间(虽然Xib在第一次写的时候很快),如果多人开发很可能造成代码冲突,解决Xib的冲突也是很耗时间,如果是其他人来修改你的Xib要比直接修改代码难。

2.屏幕适配难

比如一个UIView在iphone8上的frame是(10,10,100,100),那么它在iphone8P和iphoneX上的frame就不是原来的frame了,而是各个参数会分别乘上一个比例比如在iphone8P上会是(101.3,101.3,1001.3,1001.3),如果要进行屏幕适配就要将这个UIView的四个约束拖出来,进行适配,对一个控件适配就要拖四个约束,如果多个控件那岂不是要拖更多的约束,所以所Xib屏幕适配很难。(管于拖约束进行屏幕适配看这篇文章https://www.jianshu.com/p/a25437f33b54

3.不常用Xib

不常用Xib导致使用不熟练,不熟练就不常用Xib,不常用Xib就不熟练....

现在发现对使用Xib的页面进行屏幕适配其实也不是那么复杂,拖那么多约束进行屏幕的适配,我们可以为NSLayoutConstraint写一个分类,然后一次性实现对所有约束的适配。

对Xib页面进行适配

我们在NSLayoutConstraint的分类中利用runtime将其initWithCoder:方法进行替换,然后在替换的方法中对Xib中所有的约束进行屏幕适配。
核心代码:

#import "NSLayoutConstraint+Scale.h"
#import <objc/runtime.h>

#define kScreenWidth ([UIScreen mainScreen].bounds.size.width)
#define ScaleWidthByOject(contentWidth) (CGFloat)kScreenWidth/375.0*(contentWidth)

@implementation NSLayoutConstraint (Scale)

+ (void)load{

Method imp = class_getInstanceMethod([self class], @selector(initWithCoder:));
Method myImp = class_getInstanceMethod([self class], @selector(myInitWithCoder:));
method_exchangeImplementations(imp, myImp);
}

- (id)myInitWithCoder:(NSCoder*)aDecode
{
[self myInitWithCoder:aDecode];
if (self){
    
    if([self.identifier isEqualToString:@"666"])    // 也可以加一个判断条件,只对符合条件的约束进行适配
    {
        self.constant = ScaleWidthByOject(self.constant);
    }
}
return self;
}
@end

这样,虽然适配简单了,但本人开发中还是不用Xib,当然仁者见仁智者见智。

注意:要给约束的identifier添加一个值,如果上述代码中的约束的identifier为666.

****本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊***

相关文章

  • iOS开发中关于对Xib的页面进行屏幕适配

    本人开发中是不用Xib的。 不用Xib的原因 1. 维护成本高 当页面布局更改之后修改页面的时间完全高于修改代码的...

  • iOS:xib文字、屏幕等比缩放适配

    ScaleWithScreen iOS:xib屏幕适配 经过在网上找到许多方法集中处理,终于可以进行XIB屏幕适配...

  • 屏幕适配

    适配 什么是适配?适应、兼容各种不同的情况 iOS开发中的适配?系统适配针对不同版本的操作系统进行适配屏幕适配针对...

  • XCode中的sizeclass(Vary for Traits

    几乎所有的iOS开发者都会遇到屏幕适配的问题,苹果提供了很多方法来做适配,包括Xib、NSLayoutConstr...

  • iOS之Masonry代码解析

    背景 iOS平台上Autolayout布局对于屏幕的适配简直就是一把利剑,如果用xib或Storyboard进行布...

  • iOS 链式编程一行代码完成屏幕适配

    在开发过程中关于屏幕适配的方法Masonry 着实很好用拖 XIB 的时候用一用系统的 AutoLayout 感觉...

  • iOS11界面适配-XIB

    最近在适配过程中发现通过XIB对UI进行约束时,safeArea(是在iOS11适配中十分重要的, 可以通过iOS...

  • iOS 屏幕适配

    现在开发iOS无非就是用xib和纯代码开发,不论用什么方式开发都少不了屏幕适配。这只是个人开发中使用的方法也不一定...

  • iOS:Xib屏幕适配

  • iPhone X屏幕适配

    iPhone X开发设计屏幕适配。iPhone X(10)屏幕分辨率与适配,iOS开发适配与UI设计问题。 htt...

网友评论

      本文标题:iOS开发中关于对Xib的页面进行屏幕适配

      本文链接:https://www.haomeiwen.com/subject/zaemgftx.html