XIB创建的cell中的已经适配过的控件如何动态改变高度?
来源:互联网 发布:淘宝的发货人能不能改 编辑:程序博客网 时间:2024/06/05 22:34
在自定义cell时,无论是UITableView还是UICollectionView,我们都习惯于用XIB来自定义cell,并完成屏幕适配。
若是用代码来动态调整某个控件的frame倒是不难,但是用XIB我们自己弄好的约束却怎么办呢?有人可能会说,用代码来写,可是运行后并没有效果,这其实就是AutoLayout的作用。这时候又有人会说,你把AutoLayout的勾去掉,那么你做的适配不就消失了?
所以我在写程序的时候研究了一下这个问题,需要动态调整cell上一个控件的高度,并且它的高度一改变,其它控件的也会改变,因为它们的约束是相互依赖的。
所以说我们需要把约束拖线,IBOutlet,注意:在拖线之前,这里是height = XX,拖线之后,它就是你起的名字了。
注意:这个控件的约束是这样的:水平居中,左右边距与父控件保持10,下边距与父控件保持30,并保持高度不变。
这样的约束是没问题的,但是我需要改变它的高度。(如果需要改变宽度的话,我会去掉左右边距,而保持宽度不变)
能拖出来的约束是在左边显示的,如上图所示,在Constraints下面。约束拖出来之后是这样的:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *titleLabelHeight;
此时,我们需要修改的就是这个约束属性啦!
在哪里改这个属性比较合适呢?我推荐重写 cell 的 layoutSubviews 方法。注意:别忘了调用父类!切记!
- (void)layoutSubviews { [super layoutSubviews]; self.titleLabelHeight.constant = [self.titleLabel.text sizeWithFont:[UIFont systemFontOfSize:18] maxSize:CGSizeMake(300, MAXFLOAT)].height;}
这里我调用了我自己写的类目,具体可以参考我之前的博客《动态调整Label高度》这一篇。
需要注意的是,NSLayoutConstraint 这个类有一个属性 constant,我们需要修改的就是这个属性。它的类型是CGFloat,也就是我需要修改的高度。
至此,这个cell上的label的高度已经修改完毕。至于cell的高度,可以在 tableView/collectionView 的代理方法中写。(动态调整cell的Height/Size)
- XIB创建的cell中的已经适配过的控件如何动态改变高度?
- 动态改变CELL 的高度
- xib创建cell后想要代码改变cell中控件的frame
- 动态改变tableview的cell的高度
- iOS开发-UI控件:动态改变UITableView中的Cell高度
- IOS 动态改变cell的高度
- IOS 动态改变cell的高度
- iOS 动态改变cell的高度
- XIB 创建的控件设置0.5高度
- 动态改变UITableView中的Cell高度
- 动态改变UITableView中的Cell高度
- 动态改变UITableView中的Cell高度
- ios关于用xib创建的cell 自动返回cell的高度问题!
- ios关于用xib创建的cell 自动返回cell的高度问题
- ios开发笔记之如何让tableView根据文本内容动态改变cell的高度
- xib绘制的cell中动态改变cell子视图的frame
- 利用reloadRowsAtIndexPaths:withRowAnimation:来动态改变cell的高度
- 利用reloadRowsAtIndexPaths:withRowAnimation:来动态改变cell的高度
- Unity3d调用android里的.so
- android数据库的简单Demo(原生版+Google版)
- c里面关于变参数函数的理解
- 如何调整ubuntu默认启动引导操作系统
- 实现中等通讯录(OC)
- XIB创建的cell中的已经适配过的控件如何动态改变高度?
- grep命令详解
- JS自定义data-*属性
- Qt中的Q_OBJECT
- MySql启用SQL trace追踪SQL语句的操作: general_log
- JVM中Java对象内存模型
- 简单n!
- PADS 直接修改 PCB,不用修改原理图
- jquery日期插件jquery.datePicker详解