【问题标题】:How to make a custom design button in Swift IOS app如何在 Swift IOS 应用程序中制作自定义设计按钮
【发布时间】:2020-02-12 07:49:14
【问题描述】:

我想问你,有没有什么方法可以让一个快捷按钮在点击时具有this 的设计,而在没有点击时具有this 的设计。我想给我一些建议或任何事情。

【问题讨论】:

  • 只是我建议根据动作更改图像使用背景图像/图像

标签: ios swift xcode


【解决方案1】:

创建一个自定义 UIView 类并复制以下代码并尝试一下:) 不要忘记更改几个自定义值

class TestView: UIView {
private let selectorView: UIView = UIView()
private let trackView: UIView = UIView()
private var selectorViewLeadingConstraint: NSLayoutConstraint!
private var selectorViewTrailingConstraint: NSLayoutConstraint!
private var tapGesture: UITapGestureRecognizer!
public var isSelected: Bool = false {
    didSet {
        self.setIsSelected(isSelected)
    }
}
override init(frame: CGRect) {
    super.init(frame: frame)
    initialize()
}
required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    initialize()
}
private func initialize() {
    addTrackView()
    addSelectorView()
    addTapGestures()
}
private func addTapGestures() {
    tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapHandler))
    addGestureRecognizer(tapGesture)
}
private func addTrackView() {
    addSubview(trackView)
    trackView.translatesAutoresizingMaskIntoConstraints = false
    trackView.layer.cornerRadius = 5
    trackView.backgroundColor = .gray
    NSLayoutConstraint.activate([
        trackView.leadingAnchor.constraint(equalTo: leadingAnchor),
        trackView.trailingAnchor.constraint(equalTo: trailingAnchor),
        trackView.heightAnchor.constraint(equalToConstant: 10),
        trackView.centerYAnchor.constraint(equalTo: centerYAnchor)
        ])
}
private func addSelectorView(){
    addSubview(selectorView)
    selectorView.translatesAutoresizingMaskIntoConstraints = false
    selectorView.backgroundColor = .green
    selectorViewLeadingConstraint = selectorView.leadingAnchor.constraint(equalTo: leadingAnchor)
    selectorViewLeadingConstraint.priority = UILayoutPriority(500)
    selectorViewTrailingConstraint = selectorView.trailingAnchor.constraint(equalTo: trailingAnchor)
    selectorViewTrailingConstraint.priority = .defaultLow
    NSLayoutConstraint.activate([
        selectorViewLeadingConstraint,
        selectorViewTrailingConstraint,
        selectorView.topAnchor.constraint(equalTo: topAnchor),
        selectorView.bottomAnchor.constraint(equalTo: bottomAnchor),
        selectorView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.5),
        ])
}
override func layoutSubviews() {
    super.layoutSubviews()
    selectorView.layer.cornerRadius = selectorView.frame.height/2
}
@objc func tapHandler() {
    isSelected = !isSelected
}
private func setIsSelected(_ isSelected: Bool) {
    selectorViewTrailingConstraint.priority = isSelected ? .defaultHigh : .defaultLow
    UIView.animate(withDuration: 0.3) {
        self.layoutIfNeeded()
        self.selectorView.backgroundColor = isSelected ? .green : .green
    }
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 2021-04-24
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多