【发布时间】:2020-11-23 03:35:54
【问题描述】:
我正在开发一个基本上允许用户为其个人资料输入一些信息的屏幕。此屏幕上有一个按钮,用户可以使用它来选择他们的性别。我想将这些按钮设置为圆形,因此我将这些按钮的圆角半径设置为它们高度的一半。要进入此屏幕,有两种方法,一种是创建个人资料,第二种是编辑个人资料。问题是,当您创建配置文件时,UIButton 会被挤压并且无法正确舍入,但是当我编辑配置文件时,它会正确舍入,即使它是完全相同的代码,唯一的区别是当您在屏幕编辑您的个人资料,我启用导航栏。
我用来圆按钮的代码在这里:
maleButton.layer.borderColor = maleButtonColor.cgColor
maleButton.setTitleColor(maleButtonColor, for: .normal)
maleButton.layer.cornerRadius = maleButton.frame.size.height / 2
这发生在一个被调用的函数中:viewDidLayoutSubviews()
这些按钮的区别如下所示: 注意** 这些是完全相同的按钮,唯一的区别是第二张图片的背景颜色已更改,以显示用户已选择该按钮,因为他们正在编辑他们的个人资料。
我打印出按钮的高度、宽度和角半径:
正如您在这两种情况下看到的那样,拐角半径正好是高度的一半,所以它应该正确舍入,但事实并非如此。这很奇怪,因为它是完全相同的代码和相同的视图控制器,在不同的情况下它可以工作和不工作。这个问题一直困扰着我,所以希望有人可以帮助阐明它。谢谢!
【问题讨论】:
-
有趣,您是否尝试在“创建”配置文件时禁用导航栏以查看是否会改变按钮的弯曲方式?
-
我确实尝试过,它在那种情况下仍然有效,但在另一种情况下无效。
-
还能用吗?我认为创建个人资料是失败的情况?
-
不,我认为您读错了帖子,因为您可以看到导航栏在编辑而不是创建时已启用。所以我所做的是尝试在编辑时禁用栏,看看这是否会导致按钮被夹住,但它没有。
-
好的,我认为这是原因,你能试试
viewDidAppear:方法中的代码吗?视图确实出现了始终正确的框架。如果可行,我还可以为您提供其他方法。
标签: ios swift xcode uibutton uikit