gpt4 book ai didi

ios - 尽管角半径是高度的一半,但 UIButton 未正确舍入

转载 作者:行者123 更新时间:2023-12-01 16:11:30 25 4
gpt4 key购买 nike

我正在开发一个基本上允许用户为他们的个人资料输入一些信息的屏幕。此屏幕上有一个按钮,用户可以使用它来选择他们的性别。我想将这些按钮设置为圆形,因此我将这些按钮的圆角半径设置为它们高度的一半。要进入此屏幕,有两种方法,一种是创建个人资料,第二种是编辑个人资料。问题是,当您创建配置文件时,UIButton 会被挤压并且无法正确舍入,但是当我编辑配置文件时,它会正确舍入,即使它是完全相同的代码,唯一的区别是当您在屏幕编辑您的个人资料,我启用导航栏。
我用来圆按钮的代码在这里:

        maleButton.layer.borderColor = maleButtonColor.cgColor
maleButton.setTitleColor(maleButtonColor, for: .normal)
maleButton.layer.cornerRadius = maleButton.frame.size.height / 2
这发生在一个被调用的函数中: viewDidLayoutSubviews()这些按钮的区别如下所示:
注意** 这些是完全相同的按钮,唯一的区别是第二张图片的背景颜色已更改,以显示用户已选择该按钮,因为他们正在编辑他们的个人资料。
enter image description here
enter image description here
我打印出按钮的高度、宽度和角半径:
当它在这里不起作用时,这些值是:
enter image description here
当它在这里工作时是值:
enter image description here
正如您在这两种情况下看到的那样,拐角半径正好是高度的一半,所以它应该正确舍入,但事实并非如此。这很奇怪,因为它是完全相同的代码和相同的 View Controller 在不同的情况下它工作和不工作。这个问题一直困扰着我,所以希望有人可以帮助阐明它。谢谢!

最佳答案

@Wana_B3_Nerd 造成这个原因的主要原因是你的比例高度。 viewDidLoadviewWillAppear总是在 Storyboard中设置高度。在 viewDidAppear:您将始终获得更新的框架。您可以通过多种方式解决此问题。我在建议我知道的方法。

  • 做代码 viewDidAppear:方法
  • 如果 viewDidAppear:不适用,您希望在 viewDidLoad 中执行代码然后在主调度队列中添加代码
     DispatchQueue.main.async {
    // your code
    }
  • 子类 UIButton 并将您的代码添加到 drawRect方法。
     class RoundButton: UIButton {

    override func draw(_ rect: CGRect) {
    // Your code
    }

    }
  • 关于ios - 尽管角半径是高度的一半,但 UIButton 未正确舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63223166/

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