圆形 UIButton - iPad 尺寸

问题描述 投票:0回答:4

我有自定义 UIButton 具有圆角边缘

import UIKit

class RoundedButton: UIButton {

    override init(frame: CGRect) {

        super.init(frame: frame)

        self.layer.cornerRadius = self.bounds.width * 0.5
        self.backgroundColor = UIColor(patternImage: UIImage(named: "map.png")!)
        self.setTitleColor(UIColor.white, for: UIControlState.normal)
    }

    required init?(coder aDecoder: NSCoder) {

        super.init(coder: aDecoder)

        self.layer.cornerRadius = self.bounds.width * 0.5
        self.backgroundColor = UIColor(patternImage: UIImage(named: "map.png")!)
        self.setTitleColor(UIColor.white, for: UIControlState.normal)
    }

}

现在我在 UIViewcontroller 的 XIB 文件中使用这个“RoundedButton”(大小为 110, 110),并且设置约束以维持 UIViewcontrollers 视图的纵横比。

该按钮在 iPhone 模拟器中看起来是圆形的,但该按钮在 iPad 模拟器中不是圆形的。当我在viewDidAppear中设置layer.cornerRadius属性时,按钮在iPad模拟器中会变成圆形。

请看图片

我正在寻找替代解决方案,而不是在 viewDidappear 中再次重新定义图层角半径。

谢谢

ios swift constraints
4个回答
1
投票

像这样覆盖方法layoutSubviews:

override func layoutSubviews() {
    super.layoutSubviews()
    self.layer.cornerRadius = self.bounds.width * 0.5
}

您现在还可以从 init 中删除cornerRadius行

更多内容请参阅 UIView 文档:https://developer.apple.com/documentation/uikit/uiview/1622482-layoutsubviews


1
投票

重写layoutSubviews方法就可以了

override func layoutSubviews() {
    super.layoutSubviews()
    self.layer.cornerRadius = self.bounds.width * 0.5
}

0
投票

重写layoutSubviews函数:

import UIKit

class RoundedButton: UIButton {

    override init(frame: CGRect) {
        super.init(frame: frame)

        self.backgroundColor = UIColor(patternImage: UIImage(named: "map.png")!)
        self.setTitleColor(UIColor.white, for: UIControlState.normal)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        self.backgroundColor = UIColor(patternImage: UIImage(named: "map.png")!)
        self.setTitleColor(UIColor.white, for: UIControlState.normal)
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.cornerRadius = self.bounds.width * 0.5
    }
}

0
投票
import UIKit

class RoundedButton: UIButton {

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.setTitleColor(UIColor.white, for: UIControlState.normal)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.setTitleColor(UIColor.white, for: UIControlState.normal)
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.cornerRadius = self.bounds.width / 2
    }
}

我还为您创建了一个代码示例。 圆形按钮

© www.soinside.com 2019 - 2024. All rights reserved.