在iOS中定制形状(倒T)边界Uiview

时间:2012-08-21 15:40:10

标签: iphone objective-c ios uiview customization

我必须在iOS上创建一个自定义形状(倒T)边界Uiview。我附上下面的截图。我已经研究了很多,我找到了一种方法,使用here中的 UIBezierPath

但是我没有想到把我的视角塑造成倒T形。

Inverted bordered T

3 个答案:

答案 0 :(得分:6)

UIView总是长方形的。来自文档:

  

UIView类在屏幕上定义了一个矩形区域,以及用于管理该区域内容的接口。

即使视图仅限于矩形,您也可以以任何您喜欢的方式塑造活动区域。通过将其与透明背景相结合,您可以模仿您可以绘制的任何形状的视图。

当您的矩形视图接收到触摸和其他事件时,您的事件处理程序应首先检查活动是否发生在倒T区域。如果活动在外面,则应忽略该事件。

答案 1 :(得分:4)

p p ..最后我做到了。我使用了两个UiViews子类(顶部和底部)

我面临的主要挑战是关于边框,因为如果我将边框设置为我的两个视图(顶部和底部),它将不会显示为单个容器项。 :)

我完成的步骤:

创建两个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];

我为 TopView 两个完整边框(底部,右侧)绘制了三个边框(顶部,右侧,左侧), drawRect 方法, BottomView >两个部分边框(左上角,右上角)。

请参阅我的TopView课程here

请参阅我的BottomView类here

感谢所有人。

<强>输出

Custom UiView

答案 2 :(得分: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];
}