我必须在iOS上创建一个自定义形状(倒T)边界Uiview。我附上下面的截图。我已经研究了很多,我找到了一种方法,使用here中的 UIBezierPath 。
但是我没有想到把我的视角塑造成倒T形。
答案 0 :(得分:6)
UIView
总是长方形的。来自文档:
UIView类在屏幕上定义了一个矩形区域,以及用于管理该区域内容的接口。
即使视图仅限于矩形,您也可以以任何您喜欢的方式塑造活动区域。通过将其与透明背景相结合,您可以模仿您可以绘制的任何形状的视图。
当您的矩形视图接收到触摸和其他事件时,您的事件处理程序应首先检查活动是否发生在倒T区域。如果活动在外面,则应忽略该事件。
答案 1 :(得分:4)
我面临的主要挑战是关于边框,因为如果我将边框设置为我的两个视图(顶部和底部),它将不会显示为单个容器项。 :)
我完成的步骤:
创建两个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。
感谢所有人。
<强>输出强>:
答案 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];
}