gpt4 book ai didi

ios - 如何使用 Xcode 8 将 UIView 设置为圆角半径

转载 作者:技术小花猫 更新时间:2023-10-29 11:03:20 25 4
gpt4 key购买 nike

我在设置 View 的角半径时遇到问题,因为自从 Xcode 更新到 8 以来, View 的框架在大多数情况下都设置为 1000x1000 而不是适当的大小。

有个类似的问题here但我想添加更多信息,希望有人找到答案或解决方法。

在其中一个实例中,我有一个 TableView 单元格,其中有一个在 Storyboard 中创建的 ImageView 。它的宽度和高度被设置为具有约束条件的常量(至 95)。圆角半径在 layoutSubviews 中设置,目前一直有效:

- (void)layoutSubviews
{
[super layoutSubviews];
self.myImageView.layer.cornerRadius = self.myImageView.frame.size.width/2.0f;
}

所以我尝试了一些尝试和错误,如果我尝试在设置图像(从远程服务器检索图像)后通过调用触发布局,情况似乎会好一些:

self.myImageView.image = image;
[self.myImageView setNeedsLayout];
[self setNeedsLayout];
[self layoutIfNeeded];

在大多数情况下这仍然不起作用。现在是有趣的部分:

我在选项卡栏上有一个这个 View Controller 的情况,当我用目标 View Controller 按下选项卡时,将立即调用布局 subview (来自 UIApplicationMain),其中的大小 ImageView 是 1000x1000,但是一旦图像被设置并且我调用了布局方法,然后布局 subview 被再次调用,正确的 ImageView 大小为 95x95,得到了正确的结果。

第二种情况是推送相同类型的 View Controller ,现在布局首先不被调用,唯一的调用是在设置图像并强制布局之后进行的。结果再次出现大小为 1000x1000 的 ImageView ,将角半径设置为 500,图像不可见。

那么有没有一个很好的解决方案来修复这些奇怪的帧值呢?我在多个 View Controller 、 TableView 单元格上有同样的问题。在更新之前,这一切都曾经有效。

有没有人知道这个问题的根源是什么?是 Storyboard还是某种设置迁移,还是此版本的软件引入了一些布局错误?

我现在还添加了 Nib 唤醒:

- (void)awakeFromNib
{
[super awakeFromNib];

[self.myImageView setNeedsLayout];
[self setNeedsLayout];
[self layoutIfNeeded];
}

现在强制布局在我的情况下至少发生 2 次,而第二次帧是正确的。这仍然远非答案,这太糟糕了,我想尝试它,因为我需要在每个 ImageView 、按钮的所有单元格上使用它。

最佳答案

你能不能把你的方法更新成

- (void)layoutSubviews
{
[super layoutSubviews];
self.myImageView.layer.cornerRadius = self.myImageView.frame.size.width/2.0f;
self.myImageView.clipsToBounds = TRUE;
}

试一试。

因为在我的一个案例中,我错过了设置 clipsToBounds = TRUE; 并且它没有让它成为圆圈。

关于ios - 如何使用 Xcode 8 将 UIView 设置为圆角半径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39702895/

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