iOS でカスタム形状 (逆 T) の境界付き Uiview を作成する必要があります。以下にスクリーンショットを添付します。私は多くのことを調査しましたが、ここからUIBezierPathを使用する方法を見つけました。
しかし、自分のビューを逆 T 字型にするというアイデアは思い浮かびませんでした。
iOS でカスタム形状 (逆 T) の境界付き Uiview を作成する必要があります。以下にスクリーンショットを添付します。私は多くのことを調査しましたが、ここからUIBezierPathを使用する方法を見つけました。
しかし、自分のビューを逆 T 字型にするというアイデアは思い浮かびませんでした。
ふぅ..やっとできました。2 つの UiViews サブクラス (トップとボトム)を使用しました。
私が直面した主な課題は境界線に関するものでした。境界線を 2 つのビュー (上部と下部) に設定すると、単一のコンテナー アイテムとして表示されないためです。:)
私が行った手順:
2 つの UiView サブクラスを作成しました。topViewとbottomViewを呼び出しましょう。
TopView *topView = [[TopView alloc] initWithFrame:CGRectMake(220, 60, 200, 200)];
[topView setBackgroundColor:[UIColor yellowColor]];
[self.view addSubview:topView];
BottomView *bottomView = [[BottomView alloc] initWithFrame:CGRectMake(130, 260, 380, 200)];
[bottomView setBackgroundColor:[UIColor yellowColor]];
bottomView.customShape = topView; //Set the custom shape as TopView to frame to draw the border.
[self.view addSubview:topView];
drawRectメソッドをオーバーライドして、TopViewの3 つの境界線(上、右、左)と2 つの完全な境界線(下、右)、BottomViewの2 つの部分的な境界線(左上、右上) を描画しました。
ここで私の TopView クラスを参照してください。
ここで私のBottomViewクラスを参照してください。
ありがとうございます。
出力:
CAShapeLayerをレイヤーとして使用してビューを作成できるはずです。
UIViewのサブクラスを作成し、layerClassメソッドをオーバーライドします。
+ (Class)layerClass {
return [CAShapeLayer class];
}
次に、viewDidLoadで、shapeLayerへのbezierPathを指定できます。
- (void)viewDidLoad {
[(CAShapeLayer *)self.layer setPath:someBezierPath.CGPath];
[self.layer setBackgroundColor:[UIColor redColor].CGColor];
}