ボタンの選択状態を表示するためのUIButtonサブクラスがあります。選択された状態では、ボタンビューの下部に太い黒線が表示され、選択されていない場合は黒線が表示されません。ただし、これをUIButtonサブクラスで使用すると、黒線表示がオフセットされます。私はインセットで遊んでみましたが、それは問題ではないと思います。UIButtonサブビューはサブクラスでオフセットされています
class TabButton: UIButton {
private var height:CGFloat = 5
private var selectedIndicator:UIView?
override var isSelected: Bool {
didSet {
selectedIndicator?.isHidden = !isSelected
}
}
fileprivate func initializeSelector(_ frame: CGRect) {
selectedIndicator = UIView(frame: CGRect(x: 0, y: frame.size.height - height, width: frame.size.width, height: height))
selectedIndicator?.backgroundColor = UIColor.black
self.addSubview(selectedIndicator!)
}
override func awakeFromNib() {
super.awakeFromNib()
initializeSelector(self.frame)
}
}
は、目的のボタンは次のようになります:ここに私のサブクラスである
しかし、その代わりに、それは次のようになります。
は誰も私を理解するのに役立ちます
ここで何が起こっているのか、それを修正する方法は?ありがとう!
この回答は間違っています。 'initializeSelector'は' layoutSubviews'の中で 'initializeSelector()'を呼び出すことによって、 'initializeSelector'が新しい' UIView'をサブビューとして挿入するので、ボタンのサブビューとして複数の( 'layoutSubviews'が呼び出される) –
あなたは正しく私のせいです、ありがとう;)私はモバイルアプリから書いていましたが、その方法がビューを追加していることに気付かなかった。私は彼がペン先から目を覚ましていると確信していた。 –