4

iOS でカスタム形状 (逆 T) の境界付き Uiview を作成する必要があります。以下にスクリーンショットを添付します。私は多くのことを調査しましたが、ここからUIBezierPathを使用する方法を見つけました。

しかし、自分のビューを逆 T 字型にするというアイデアは思い浮かびませんでした。

反転ボーダー T

4

3 に答える 3

4

ふぅ..やっとできました。2 つの UiViews サブクラス (トップとボトム)を使用しました。

私が直面した主な課題は境界線に関するものでした。境界線を 2 つのビュー (上部と下部) に設定すると、単一のコンテナー アイテムとして表示されないためです。:)

私が行った手順:

2 つの UiView サブクラスを作成しました。topViewbottomViewを呼び出しましょう。

    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メソッドをオーバーライドして、TopView3 つの境界線(上、右、左)と2 つの完全な境界線(下、右)、BottomViewの2 つの部分的な境界線(左上、右上) を描画しました。

ここで私の TopView クラスを参照してください。

ここで私のBottomViewクラスを参照してください。

ありがとうございます。

出力:

カスタム UiView

于 2012-08-22T12:27:38.383 に答える
3

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];
}
于 2012-08-21T15:52:05.040 に答える