【发布时间】:2018-08-06 21:31:08
【问题描述】:
当我尝试在界面生成器中使用“查看为”选项时,我目前遇到了问题。
例如,当为 iPhone 8 Plus 选择“查看方式”时,所有视图约束都会更新,以便在 iPhone 8 Plus 上的界面构建器中看起来不错,但 UITableViewCells 的子视图不会在界面构建器中更新。这可以在下面的屏幕截图中看到。
Viewing as iPhone 8 Plus, switched from viewing as iPhone X
Viewing as iPhone X, switched from viewing as iPhone 8 Plus
通常这不会真正打扰我,因为它会构建并更新所有约束,但是当我构建应用程序时,由于某种原因,我在 UITableViewCell 的主子视图上设置的 CAGradientLayer 不会更新到这些约束,并保留上一个“查看为”选项的约束。
CAGradientLayer constraint issues
我尝试覆盖layoutSublayers(of: CALayer),然后更新CALayer 的宽度以更新UIView 的新宽度,但这不起作用,因为UIView 的框架没有更新以反映更新的约束。
有什么方法可以在应用约束的情况下获得 UIView 的宽度?或者有没有我可以在 Xcode 中应用的修复程序来解决这个问题。
非常感谢,
-威廉
【问题讨论】:
-
你在哪里设置渐变?
-
@GIJOW 我有一个 UIView 的扩展,用于创建和设置渐变。
-
你能测试一下...如果你在 viewDidAppear 上设置渐变,它是否有效?
-
@GIJOW 我在 UITableViewCell 类中设置渐变,其中 viewDidAppear 函数不可用。谢谢
标签: ios uitableview autolayout interface-builder calayer