0
カスタムUISegmentedコントロールをプログラムに実装しようとしています。 CGRectと並んで(レイアウトの競合が激しくならずに)自動レイアウトを使用する方法や、それを完全に取り除く方法はありますか? 以下は、セグメント化されたコントロールの特定のインスタンスを作成するために使用しているコードです。フレームイニシャライザが必要です。フレームイニシャライザでの自動レイアウトの使用
let seg = YSSegmentedControl(
frame: CGRect(
x: 0,
y: 0,
width: 0,
height: 0),
titles: [
"First",
"Second",
"Third"
],
action: {
control, index in
print ("segmented did pressed \(index)")
})
seg.delegate = self
view.addSubview(seg)
}
}
おかげで、 ニック
私は、自動レイアウトを使用すると、実際にはもう常に「常に」です。可能であれば空のイニシャライザを使用し、指定されたイニシャライザがフレームCGRect.zeroを必要とする場合に使用します。あなたの場合、私は明示的なフレームをそれに置き換えます - それはあなたの意図をより明確にします。それからあなたのニーズに合わせて高さ/幅のレイアウトアンカーと配置をします。 – dfd
これはすごくうまくいった。残念ながら、YSSegmentedControlは空の初期化子を除いていないので、CGRect.zeroのルートに移動する必要がありました。私は以前これを試していましたが、高さの幅のアンカーではなく、位置のアンカーしか含まれていませんでした。私は高さと幅のアンカーを追加した後、それは働いた! –