使用 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 框架的编程更改的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 以编程方式创建 UILabel?

如何将UILabel放置在导航栏的中心

只需要修复 UIButton 和 UILabel 的自动布局问题

错误域= NSURLErrorDomain代码= -1005“网络连接丢失。”

UILabel 在第二次设置属性文本时丢失文本属性

为啥将 UILabel 设置为完全透明会丢失点击手势?