使用 Xcode6 丢失对 UILabel 和 UIImage 框架的编程更改
Posted
技术标签:
【中文标题】使用 Xcode6 丢失对 UILabel 和 UIImage 框架的编程更改【英文标题】:Programmatic changes to UILabel and UIImage frame are being lost using Xcode6 【发布时间】:2014-09-18 15:00:54 【问题描述】:我有一个使用 Xcode5 构建时运行良好的生产应用程序。该应用在 ios8 下的生产环境中运行良好。
使用 xcode6 构建时,发生了一些奇怪的事情。根据用户的选择,我通过调用一个方法来设置几个UILabel和UIImage的位置,以这段代码为例:
CGRect frame1 = _lblRedJudge1Score.frame;
frame1.origin.x = 253;
frame1.origin.y = 610;
frame1.size.width = 25;
frame1.size.height = 25;
_lblRedJudge1Score.frame = frame1;
_imageRedJudge1Score.frame = frame1;
该方法正确设置_lblRedJudge1Score和_imageRedJude1Score的位置。然后,视图上的任何用户交互,例如按钮按下,都会导致位置设置返回到 StoryBoard 上显示的位置。这在早期版本的 Xcode 中不会发生。
就好像,视图被重置并忘记了我上面设置的位置设置。 UIView 似乎根据 StoryBoard 设置重新编写/更新,并丢失了我在该方法中调用的编程设置。
注意:标签和图像对象在 .h 文件中定义为强的、非原子的。两个对象在视图中都没有任何约束。用于设置位置的方法只调用一次。
这是一个我不理解并且需要更新代码的新功能,还是 xcode6 中的一个错误?这个问题出现在模拟器和实际设备中。
【问题讨论】:
【参考方案1】:layoutSubview
不再被调用。 那可能是你的问题。 签出this。
【讨论】:
以上是关于使用 Xcode6 丢失对 UILabel 和 UIImage 框架的编程更改的主要内容,如果未能解决你的问题,请参考以下文章
只需要修复 UIButton 和 UILabel 的自动布局问题