使用了autolayout就无法在viewDidLoad中改变视图的frame了吗?
假设,在xib文件中定义了视图控制器的view,其中有一个label,被放置在view的中心位置(通过constraints固定)。
现在想通过触摸屏幕的某个点实现label从左滑入,从右滑出的效果(目标-动作)。于是我在
viewDidLoad
中将label的frame设置到屏幕左边,窗口外侧。可是实现效果却是label从原地冒了出来(就是不知道什么时候label的frame又被改回了xib中的frame)。我试过在动作方法中对label的frame进行同样的设置,这时效果符合预期。所以我的问题是,为什么不能
viewDidLoad
方法中进行这样的修改,我记得同视图相关的设置都应该在这个方法里完成啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
1 把label的约束拿出来
2 点击时改变约束
从初始位置出现是因为在执行布局操作的时候会根据你的约束来生成 frame,你的初始约束导致的这个行为的发生。
如果你想从左滑向中间,那么你应该先设置初始约束在屏幕左边
(UILabel)|Screen|
。然后在执行 Target Action 行为时修改 UILabel 约束的 constant。接着执行布局操作。就如@paul_ding 的第二个答案,不过建议更改成: