ios - 使用 viewDidLayoutSubviews() 自动调整角半径大小,在显示之前不更新 View

标签 ios swift cornerradius viewdidlayoutsubviews

我是 swift 和 Xcode 的新手,所以可能有一个简单的答案或更好的方法来做到这一点。我正在尝试在所有尺寸的 iOS 设备上为我的按钮制作圆角边缘,到目前为止我发现的最佳方法是使用此方法:

    override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    for i in 0..<buttons.count {
        self.buttons[i].layer.cornerRadius = self.buttons[i].bounds.size.height / 2
    }
    examResultsBackButtonOutlet.layer.cornerRadius = examResultsBackButtonOutlet.bounds.size.height / 2
}

// Build UI

func loadUI() {

    // Round the edges, change color background, font

    titleOutlet.mainMenuStyle("", 75, earthGreenWithAlpha)
    for i in 0..<buttons.count {
        buttons[i].mainMenuStyle("", 40)
    }

    print("Main Menu successful load")

}

我在我的 viewDidLoad 方法中调用 loadUI() 方法是为了它的值(value):

    //MARK: viewDidLoad()

override func viewDidLoad() {

    super.viewDidLoad()

    // Load the UI
    loadUI()
    loadExamResultsView()
    mainMenu()
    examResultsStackView.isHidden = true
    loadStoredScores()
    loadStoredSettings()

}

问题不是在我第一次启动应用程序时出现(这是第一个场景/ View Controller ),而是当我从我的第二个 View Controller 继续回到这个场景时出现问题。

发生的事情是按钮的格式奇怪了大约半秒钟,然后它们被完美地重新格式化:

Correctly formatted screenshot

Incorrectly formatted screenshot

您会注意到第二张图片(仅出现约 0.5 秒)的角半径要大得多。

我怎样才能防止这种情况发生,以便用户只能看到每个按钮的完美圆角半径,而不是糟糕的简陋按钮?

谢谢!

最佳答案

感谢大家的反馈,但这是为我解决的问题:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    for i in 0..<buttons.count {
        self.buttons[i].layer.cornerRadius = self.buttons[i].bounds.size.height / 2
    }
    examResultsBackButtonOutlet.layer.cornerRadius = examResultsBackButtonOutlet.bounds.size.height / 2
}

这取代了原来的帖子:

override func viewDidLayoutSubviews() {
     super.viewDidLayoutSubviews()
     for i in 0..<buttons.count {
     self.buttons[i].layer.cornerRadius = self.buttons[i].bounds.size.height / 2
  }
  examResultsBackButtonOutlet.layer.cornerRadius = examResultsBackButtonOutlet.bounds.size.height / 2 }

谢谢!

关于ios - 使用 viewDidLayoutSubviews() 自动调整角半径大小,在显示之前不更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49213170/

相关文章:

ios - 当我们使用两个不同的 xcode 版本创建 IPA 文件时,ipa 文件有什么区别吗?

ios - pickerview 不显示数组中的数据

iOS SecTrustRef 始终为 NULL

arrays - 如何创建一个接受字符串并用其他符号替换某些字母的函数

ios - UIBezierPath 不能改变线条的颜色

ios - 圆角半径仅适用于 View 的左上角和左下角

ios - 如何制作uiimageview圆。?

iphone - 当我只有 IPA 文件时,如何制作应用程序的演示视频?

ios - Comscore SDK 未在 Swift 项目中进行跟踪

android - 角半径 Android 出了点问题