修改IB中view的frame

问题案例:

      自定义cell用xib定义,cell子视图中某个label的内容由网络获取,因为这个label加了边框,在获取数据后需要调整宽度(用sizeTofit方法即可)。

实测发现,这个label有时候宽度确实根据内容变化了,边框显示良好,但有时候还是IB里定义的宽度。


原因:

      网络异步获取数据,有时候在viewDidAppear之前得到数据,这时候设置label的宽度,之后又会恢复成IB初始设定的宽度;如果获取数据较晚,在viewDidAppear之后调整label宽度,则会正确显示。



想到的解决方案:

      1.viewDidAppear方法里修改需要修改的view的frame(可以用一个全局变量记住目标view)

      2.IB里不要定义那个view,在得到数据后用代码生成view,设置好frame再加到对应的父视图中。


      第一种方法使代码变臃肿,可读性降低,且会有神奇的UI效果:view会动一下(比如修改前宽20,修改后宽100,明显能看到view由窄变宽,甚至修改前隐藏view,修改后再显示,也会有view突然蹦出来的效果)~

      第二种方法达到了理想目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值