gpt4 book ai didi

ios - viewDidLayoutSubviews 中的 UIImageView 宽度为 1000?

转载 作者:可可西里 更新时间:2023-11-01 00:50:26 25 4
gpt4 key购买 nike

我有一个 UIview,它本身有一个 UIImageView。我希望两者都是四舍五入的,所以我写了这些代码行:

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()

// make rounded profile image
self.avatarPlaceholderView.layer.masksToBounds = true
self.avatarPlaceholderView.layer.cornerRadius = self.avatarPlaceholderView.frame.width / 2.0
self.avatarImageView.layer.masksToBounds = true
self.avatarImageView.layer.cornerRadius = self.avatarImageView.frame.width / 2.0
}

在纸面上,一切都应该工作正常,但事实并非如此。当 UIView 变圆时,UIImageView 根本不显示。进一步调查显示 self.avatarPlaceholderView.frame.width 返回正确的宽度,但 self.avatarImageView.frame.width 返回 1000 的宽度。如果我评论更奇怪的是最后 2 行,UIImageView 将可见,因此约束设置正确。

我不知道为什么会这样。

编辑

Storyboard屏幕截图:

enter image description here enter image description here

最佳答案

同样的事情也发生在我身上。有一个 UIImageView 被转换为一个圆圈后 awakeFromNib 通过:

self.iv.layer.masksToBounds = true;
self.iv.layer.cornerRadius = self.iv.frame.width/2;

找到根本原因并且您不会喜欢它 - XCode 8(惊喜惊喜)。

包含我的 imageview 的 .xib 绝对没有任何变化,角半径修改工作正常。但是,一旦我在 XCode 8 中打开这个 .xib 文件(不做任何更改), ImageView 圆圈修改就不再起作用。这是因为,正如您所注意到的, ImageView 的宽度被检测为 1000,而不是我设置为 (32) 的恒定宽度约束。

您可能知道,几乎每次您打开一个条目时,xcode 都会更改 .xib 条目,即使没有执行任何修改。其中很多都是普通的 IDE 版本标签,但偶尔随着主要 IDE 版本之间的更改,它们会出于“兼容性”目的而更改 .xib 的重要属性。


解决方法:直到 Apple 修复此问题...

  1. 打开您的 .xib 文件并执行您需要的任何更改。
  2. 打开 Xcode 右侧的文件检查器选项卡
  3. Interface Builder Document 部分下,选择“Opens in Xcode 7.x”
  4. 这将提示您保存并关闭 .xib。这样做并且在每次更改后不执行这些步骤就不要再次打开文件
  5. 再次运行您的应用。 1000 宽度和高度问题已解决!

关于ios - viewDidLayoutSubviews 中的 UIImageView 宽度为 1000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40073193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com