iOS 13 将圆形按钮更改为对角线

Posted

技术标签:

【中文标题】iOS 13 将圆形按钮更改为对角线【英文标题】:iOS 13 Changed circular buttons to diagonal 【发布时间】:2019-11-12 06:04:55 【问题描述】:

我在视图控制器中有以下两个按钮,它们在 ios 12 和 XCode 11 中显示我需要的圆形按钮,但是当我使用 iOS 13 和 XCode 11 时,它们是对角线,如图所示。

self.saveBtn.frame.size = CGSize(width:70,height:70)
self.saveBtn.layer.cornerRadius = self.saveBtn.frame.size.height/2.0
self.saveBtn.layer.borderColor = UIColor.lightGray.cgColor
self.saveBtn.layer.borderWidth = 1.5
self.saveBtn.clipsToBounds = true
self.saveBtn.titleLabel?.font = UIFont(name:"HelveticaNeue", size:18)
self.saveBtn.titleLabel?.adjustsFontSizeToFitWidth = true

self.cancelBtn.frame.size = CGSize(width:70,height:70)
self.cancelBtn.layer.cornerRadius = self.cancelBtn.frame.size.height/2.0
self.cancelBtn.layer.borderColor = UIColor.lightGray.cgColor
self.cancelBtn.layer.borderWidth = 1.5
self.cancelBtn.clipsToBounds = true
self.cancelBtn.titleLabel?.font = UIFont(name:"HelveticaNeue", size:18)
self.cancelBtn.titleLabel?.adjustsFontSizeToFitWidth = true

如何将这些按钮转换回圆形?

【问题讨论】:

在父视图上添加按钮后,您是否对按钮使用了约束? @sheshnath 是的,我确实在添加到父视图后添加了约束,但是为什么它仍然在 iOS 12 中运行而不是在 iOS 13 上运行 我不确定,可能iOS 13中的一些UI渲染机制发生了变化,尝试在viewDidLayoutSubviews上添加这个,看看这个是否有效 @sheshnath,尝试添加什么? 出现此问题是因为您的按钮或子视图高度将更改,修复此问题并获得适当的高度。你也可以试试这个:self.saveBtn.layer.cornerRadius = self.saveBtn.frame.size.width/2.0 【参考方案1】:

我不确定,但试试这个

class ViewController: UIViewController 
    override func viewDidLoad() 
        super.viewDidLoad()
    

   override func viewDidLayoutSubviews() 
        super.viewDidLayoutSubviews()
        self.saveBtn.frame.size = CGSize(width:70,height:70)
        self.saveBtn.layer.cornerRadius = self.saveBtn.frame.size.height/2.0
        self.saveBtn.layer.borderColor = UIColor.lightGray.cgColor
        self.saveBtn.layer.borderWidth = 1.5
        self.saveBtn.clipsToBounds = true
        self.saveBtn.titleLabel?.font = UIFont(name:"HelveticaNeue", size:18)
        self.saveBtn.titleLabel?.adjustsFontSizeToFitWidth = true

        self.cancelBtn.frame.size = CGSize(width:70,height:70)
        self.cancelBtn.layer.cornerRadius = self.cancelBtn.frame.size.height/2.0
        self.cancelBtn.layer.borderColor = UIColor.lightGray.cgColor
        self.cancelBtn.layer.borderWidth = 1.5
        self.cancelBtn.clipsToBounds = true
        self.cancelBtn.titleLabel?.font = UIFont(name:"HelveticaNeue", size:18)
        self.cancelBtn.titleLabel?.adjustsFontSizeToFitWidth = true
   

【讨论】:

所以按钮不是以编程方式制作的吗? ,尝试一次不以编程方式设置按钮框架我的意思是注释掉代码 - self.saveBtn.frame.size = CGSize(width:70,height:70) 好的,我自己试试再回复你 欣赏,请告诉我。

以上是关于iOS 13 将圆形按钮更改为对角线的主要内容,如果未能解决你的问题,请参考以下文章

通过单击按钮交替更改圆形按钮背景和文本

二维数组中每个对角线的最大值

Coursera因子分析模型

获取每个坐标的对角线长度的更有效方法

Project Euler 58: Spiral primes

如何在iOS中实现矩形UIButton到圆形的漂亮动画?