UISegmentedControlの角の半径を変更することはできますか? UIViewの角の半径を変更するために使用する次のアプローチを試しました。
self.segmentedControl.layer.cornerRadius = 15.0;
self.segmentedControl.layer.masksToBounds = YES;
UISegmentedControlのコーナーを切り取るだけであるため、これは機能しませんでした。
ありがとう!
これは動作するはずです:
self.segmentedControl.layer.cornerRadius = 15.0;
self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
self.segmentedControl.layer.borderWidth = 1.0f;
self.segmentedControl.layer.masksToBounds = YES;
CornerRadiusを設定した後、境界線を指定する必要があります。
UISegmentedControlをUIView内に埋め込み、UIViewのコーナー半径を設定します。
Objective-C
outerView.layer.cornerRadius = CGRectGetHeight(outerView.bounds) / 2;
outerView.layer.borderColor = [UIColor blueColor].CGColor;
outerView.layer.borderWidth = 1;
スイフト
outerView.layer.cornerRadius = CGRectGetHeight(outerView.bounds) / 2
outerView.layer.borderColor = UIColor.blueColor().CGColor
outerView.layer.borderWidth = 1
セグメント化されたコントロールは、その角を描画する方法を変更しないため、独自の方法で角を描画し続け、その後、角を切り取ります。セグメント化されたコントロールがどのように境界形状を描くかは管理していません。描画方法が気に入らない場合は、独自の代替コントロールをゼロから考案する必要があります。あなたがやろうとしている種類に合法的に来ることができる最も近いのは、セグメント化されたコントロールの背景画像を設定することです。
Swift 3およびXcode 8.2の互換性のために更新
mySegmentedControl.layer.cornerRadius = 25.0
mySegmentedControl.layer.borderColor = UIColor.white.cgColor
mySegmentedControl.layer.borderWidth = 1.0
mySegmentedControl.layer.masksToBounds = true
以前のソリューションは私にとってはうまくいきませんでした。私の解決策は次のとおりです。
UISegmentedControl
をスーパービュー内に埋め込むには、UISegmentedControl
の境界を切り取るために、先頭、末尾、末尾、先頭の制約に-1を割り当てます。最後に、スーパービューを次のように構成する必要があります。
segmentedControl.superview.clipsToBounds = true
segmentedControl.superview.layer.cornerRadius = 0 //whatever
segmentedControl.superview.layer.borderWidth = 1
segmentedControl.superview.layer.borderColor = segmentedControl.tintColor.CGColor
結果は、他の何か(カスタム描画?)がレイヤーではなく境界を制御するためです。幸いなことに、レイヤー設定が優先されるようです。
必要な境界線の色がわかっている場合は、追加するだけです(例)。
self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
self.segmentedControl.layer.borderWidth = 1.0;
これは、 Yakivの投稿 のSwift 4.1およびXcode 9.3の変換済みで動作するコードです。
segmentedOuterView.layer.cornerRadius = segmentedOuterView.bounds.height / 2
segmentedOuterView.layer.borderColor = UIColor.red.cgColor
segmentedOuterView.layer.borderWidth = 1
segmentedOuterView.layer.masksToBounds = true
次のコードを使用します。
segmentContrl.layer.borderColor=*anycolor*.CGColor;
segmentContrl.layer.cornerRadius = 0.0;
segmentContrl.layer.borderWidth = 1.5f;
layer
なしでも可能です。あなたが試すことができます
segmentedControl.borderColor = UIColor.line
segmentedControl.borderWidth = 1
segmentedControl.cornerRadius = 8