【问题标题】:Custom UIButton class not centered horizontally自定义 UIButton 类未水平居中
【发布时间】:2021-01-24 03:08:27
【问题描述】:

我创建了一个自定义按钮类,它覆盖了 Xcode 中的默认按钮外观。我将现有故事板按钮的类分配给新的自定义类,除了按钮不再水平居中之外,一切看起来都很好。我是 Swift 编码的新手,非常感谢您的帮助。

之前

之后

这是自定义按钮类代码:

import UIKit

class CustomButton: UIButton {
    
    let radius: CGFloat = 40
    
    let darkGreen: UIColor = UIColor(red: CGFloat(23)/CGFloat(255),
                                     green: CGFloat(165)/CGFloat(255),
                                     blue: CGFloat(137)/CGFloat(255),
                                     alpha: 1)
    
    let lightGreen: UIColor = UIColor(red: CGFloat(112)/CGFloat(255),
                                     green: CGFloat(232)/CGFloat(255),
                                     blue: CGFloat(100)/CGFloat(255),
                                     alpha: 1)

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupButton()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupButton()
    }

    lazy var gradient: CAGradientLayer = {
        let gradient = CAGradientLayer()
        gradient.type = .axial
        gradient.colors = [darkGreen.cgColor, lightGreen.cgColor]
        gradient.startPoint = CGPoint(x: 0, y: 0)
        gradient.endPoint = CGPoint(x: 1, y: 0)
        gradient.cornerRadius = radius
        return gradient
    }()

    func setupButton() {
        frame.size = CGSize(width: 200, height: 80)
        tintColor = .white
        layer.cornerRadius = radius
        gradient.frame = bounds
        layer.addSublayer(gradient)
    }
}

【问题讨论】:

  • 设置约束
  • 我在视图控制器中添加了以下约束,但它没有使按钮居中,mapButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
  • 我将约束更改为 mapButton.center = view.center 有效,但现在按钮都在屏幕中心重叠,所以看起来我需要找到一种方法来分配 y 位置约束每个按钮。

标签: swift xcode uibutton storyboard viewcontroller


【解决方案1】:

将以下代码添加到 viewController 允许我将按钮水平居中并指定垂直位置:

mapButton.center = CGPoint(x: view.frame.size.width/2, y: view.frame.size.height/2.75)

【讨论】:

    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2013-08-06
    • 2018-10-10
    • 2012-11-23
    • 2013-12-28
    • 2019-03-17
    相关资源
    最近更新 更多