iOS布局

前言

2021年也在奋力的学习iOS开发呀,一些自己踩到的小坑也可以说是常用解决方案吧,记录分享。

1.UIButton设置图片后点击无响应

UIButton点击无响应的原因有很多,最近我遇到一个问题是因为设置图片尺寸过小的原因。

一次UI改版中,漂亮的UI小姐姐给的Button切图比以前的切图要小很多,没关系,我是自己长大的程序员,我可以设置Button属性为setBackgroundImage,就可以根据尺寸随意调整大小啦;OK,Button的样式显示非常nice!

Button点击事件调试中,为什么触发率这么低?偶尔点得到、偶尔点击无响应?聪明的我很快意识到是因为Button的尺寸太小而点击不到,如果把button尺寸放大,bgImage尺寸失调不符合UI、如果设置为setImage属性UI切图过小也不行,程序员为难;是找UI小姐姐重新切图还是另寻方法?

解决方案:

  • 设置图片为ImageView,调整图片大小;
  • 将图片添加到Button上,完美解决。

如果是你,你会找UI小姐姐重新切图还是独自长大?

2.TableView中嵌套CollectionView滑动冲突

一个合格的程序员总会被UE安排各种混合布局的页面,她想要的样子,我这里都有!

表格布局和流水布局离不开最核心的就是它的滑动,这次遇到的问题比较简单,均是上下滑动、只让tableview滑动,但是滑动时有两个滑动条,设置CollectionView.scrollEnabled = NO;即可。

3.CollectionView的高度自适应

百度一通,全部给我cell如何自适应高度,然后教我如何计算cell的高度!不是不是,
在我复杂而美丽的布局页面中,collection中的section是实时更新的,即collectionView的高度会变化,前面说了嵌套,同时我需要在tableview中根据collectionview的高度变换,实时刷新整个UI布局。

关键点:

  1. 设置collectionView布局时,上下左右设置约束即可
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
     
    make.top.equalTo(self.view);
    make.left.right.equalTo(self.view).offset(0);
    make.bottom.equalTo(self.view);
}];
  1. 获取collectionview本身的高度:
CGFloat height = _collectionView.collectionViewLayout.collectionViewContentSize.height;
  1. 将高度传给tableview
@property (nonatomic,copy) void (^refreshCollectionViewHeight)(CGFloat height);
if(self.refreshCollectionViewHeight){
     
	self.refreshCollectionViewHeight = height;
}
  1. 刷新高度
self.collectionView.frame = CGRectMake(0,0,500,400);//随意设置一个高度
self.collectionView.refreshCollectionViewHeight = ^(CGFloat height){
     
	self.collectionView.frame = CGRectMake(0,0,500,height);
}
[self.tableView reloadData];//刷新视图

现在就很丝滑,是UI想要的样子!

你可能感兴趣的:(Obejctive-C,ios,UIButton,UITableView,CollectionView,iOS布局)