gpt4 book ai didi

ios - 在 superview 中限制水平和垂直居中会阻止我更改框架

转载 作者:行者123 更新时间:2023-11-29 01:52:41 24 4
gpt4 key购买 nike

我在 UIView 中有一个 UIButton,有两个约束。这两个约束都是在 Interface Builder 中设置的,以便 UIButton 在其 super View 中垂直和水平居中。

我想向 UIButton 添加边框并使其变圆。关注 answer on SO我能够使按钮部分变圆。

Simi-rounded button

但由于某种原因,该按钮并不是真正的圆形。我认为这是因为我的高度和宽度不相等。每次我将按钮的宽度/高度设置为相等时,自动布局约束都会将其重置回 40x34。

我使用以下代码来创建圆形按钮。

self.startButton.clipsToBounds = true
self.startButton.layer.cornerRadius = self.startButton.frame.height / 2
self.startButton.layer.borderWidth = 1
self.startButton.layer.borderColor = self.view.tintColor.CGColor
self.startButton.layer.shadowRadius = 6.0
self.startButton.layer.shadowColor = UIColor.blackColor().CGColor
self.startButton.layer.shadowOffset = CGSizeMake(0.0, 3.0)
self.startButton.layer.shadowOpacity = 0.65

为什么按钮垂直和水平居中会阻止我更改其大小?我不明白为什么我无法设置按钮的大小并让约束根据我分配给它的大小值将其重新居中。

编辑

我已将代码移动到 viewDidLayoutSubviews 中,然后修改了约束,以便将高度和宽度都限制为 40x40。

override func viewDidLayoutSubviews() {
self.startButton.clipsToBounds = true
self.startButton.titleLabel?.text = "Start"
self.startButton.layer.cornerRadius = self.startButton.frame.height / 2
self.startButton.layer.borderWidth = 1
self.startButton.layer.borderColor = self.view.tintColor.CGColor
self.startButton.layer.shadowRadius = 6.0
self.startButton.layer.shadowColor = UIColor.blackColor().CGColor
self.startButton.layer.shadowOffset = CGSizeMake(0.0, 3.0)
self.startButton.layer.shadowOpacity = 0.65
}

这部分解决了我的问题;虽然不完全。如果我没有为 titleLabel 分配值,则该按钮是一个正确的圆形按钮。

Round button

但是,如果我为 titleLabel 分配一个值,按钮就会变成圆角矩形,而不是圆形。

Rounded Rect

文本没有出现在按钮中,这让我很困惑。我需要将按钮设置为圆形,并缩放以适应其内容。我的按钮类型设置为自定义。不知道对这个有没有影响。

编辑2

经过一些测试,我发现我正在为按钮设置边缘插入。一旦我删除了以下内容:

self.startButton.contentEdgeInsets = UIEdgeInsets(top: 25, left: 25, bottom: 25, right: 25)

我通过@Leo的回答得到了预期的效果。

Rounded arrow button

最佳答案

您需要添加有关按钮高度和宽度的限制。

固定宽高,或者纵横比都可以。

如果你使用 aspect radio,在 viewDidLayoutSubviews 中设置圆角半径

关于ios - 在 superview 中限制水平和垂直居中会阻止我更改框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236953/

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