xib使用过程中遇到的错误

iOS开发工作中很多开发人员不愿意使用xib,其中很明显的缺点就是不好维护,遇到问题不好查找。另外还有一层原因,他们长时间没有使用了,所以对xib陌生了,所以就不想使用。但是优点也同样明显,UI布局快、直观。为了不把有限的时间浪费在搭建UI界面上,所以我依然选择使用。但是使用过程中确实遇到了很多坑,记录下来避免以后遇到同样的问题花费时间解决;同时也为遇到同样问题的同行提供便利


重复引用一个控件

开发这个界面时打算通过xib约束cell自适应行高,后来浪费了我大半天时间怎么搞都实现不了,最后选择了放弃,在修改的过程中发现了问题。
标题和子标题控件都是重复的引用了xib中的同一个UILabel所以造成怎么计算行高都不对

xib的继承要添加这段代码

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    
    self = [super initWithNibName:NSStringFromClass([self.superclass class]) bundle:nibBundleOrNil];
    
    return self;
}
xib自定义view改变不了frame的2个解决方案
  1. 自定义view内部重写drawRect方法(这个方法可能有问题)
- (void)drawRect:(CGRect)rect {
    self.frame = CGRectMake(0, 0, kScreenWidth, 50);
}
  1. 取消选中Autoresizing(用这个方案)


    取消选中Autoresizing

粘贴复制控件

  • 复制比较简单,选中左侧要复制的view,command + C即可
  • 粘贴容易出错;
  1. 先在要粘贴的空白view上任意添加一个控件,例如label
  2. 点击选中label,然后command + V 粘贴即可


    复制.png

    粘贴.png

显示安全区域

xcode9之前搭建的xib界面,现在要适配iPhone X系列的安全区域,找了很久没有找到,后来终于找到了点击最左侧show the file inspector,然后勾选Use Safe Area Layout Guides


显示适配安全区域.png

TableView相关的

崩溃报错

原因是xib上的labelMoney控件,没有和xib正确的关联

reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key labelMoney.'

xib自定义组头和组尾UITableViewHeaderFooterView控件,如果是继承自UITableViewHeaderFooterView会出现莫名其妙的问题,目前还没有找到问题原因,所以最好还是继承自UIView

TableViewCell不显示的问题

  1. 检查是否设置了tableView的代理和数据源
  2. 检查行高和行数
  3. 检查注册cell的方法是否正确
    UINib *nib = [UINib nibWithNibName:NSStringFromClass([cellClass class]) bundle:nil];
    [self registerNib:nib forCellReuseIdentifier:NSStringFromClass([cellClass class])];

参考
https://blog.csdn.net/lining1041204250/article/details/81066667

Safe Area Layout Guide before iOS 9.0 报错

解决方案

新建了一个控制器SFIMUploadIdCardViewController,又无意加了同名的自定义SFIMUploadIdCardView就会报错了

reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "SFIMUploadIdCardView" nib but the view outlet was not set

组件化配置xib文件

https://www.jianshu.com/p/f6fb84d3c35e

Xib的使用:设置File's Owner的Class和view的Class的区别

https://www.jianshu.com/p/0270fbf0260b

你可能感兴趣的:(xib使用过程中遇到的错误)