UIView
次の方法で境界線を定義する があります。
self.layer.borderColor = [UIColor blackColor].CGColor;
self.layer.borderWidth = 3;
サブビューを this にアタッチし、サブビューをUIView
境界線の上に移動すると、その下に移動します。これは意図した動作ですか?サブビューをその上に置く方法はありますか?
UIView
次の方法で境界線を定義する があります。
self.layer.borderColor = [UIColor blackColor].CGColor;
self.layer.borderWidth = 3;
サブビューを this にアタッチし、サブビューをUIView
境界線の上に移動すると、その下に移動します。これは意図した動作ですか?サブビューをその上に置く方法はありますか?
Appleの仕様によると:It is composited above the receiver’s contents and sublayers.
そのため、サブビューを前面などに移動した場合でも、境界線は常にすべてのサブビューの上になります。
そこで、境界線を偽造する背景ビューを作成します。
例えば:
UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
backgroundView.backgroundColor = [UIColor blackColor];
backgroundView.clipsToBounds = NO;
UIView *bView = [[UIView alloc] initWithFrame:CGRectInset(backgroundView.bounds, 3, 3)];
bView.backgroundColor = [UIColor redColor];
UIView *cView = [[UIView alloc] initWithFrame:CGRectMake(-50, -50, 100, 100)];
cView.backgroundColor = [UIColor yellowColor];
[bView addSubview:cView];
[backgroundView addSubview:bView];
[self.window addSubview:backgroundView];
そして効果:
ビューの構造によっては、サブビューをメイン ビューの親に追加する方が簡単な場合があります。その後、メイン ビューに重ねることができ、要求どおりに境界線を重ねます。
スーパービューの「clipsToBounds」プロパティを YES に設定してみましたか? これは、パフォーマンス上の理由からデフォルトで NO に設定されていますが、yes に設定すると、探している効果が得られる場合があります。
あなたに合った特定の位置にレイヤーを挿入します:
self.layer.insertSublayer(sublayer, at: 0)