我要创建一个自定义形状(倒T)接壤的UIView iOS上。 我附上下面的截图。 我已经研究了很多,我发现使用UIBezierPath从方式在这里 。
但我没有得到任何的想法来塑造我的看法是倒T形。
我要创建一个自定义形状(倒T)接壤的UIView iOS上。 我附上下面的截图。 我已经研究了很多,我发现使用UIBezierPath从方式在这里 。
但我没有得到任何的想法来塑造我的看法是倒T形。
UIView
s为矩形始终。 从文档:
UIView类定义了屏幕和用于管理该区域中的内容的界面上的矩形区域。
尽管视图限制为矩形,你可以塑造你喜欢的任何方式的活动区域。 通过结合使用透明背景,你可以模仿,你可以画出任何形状的视图。
当你的矩形视图接收触摸和其他活动,你的事件处理程序应首先检查活动的倒T区发生。 如果活动外,该事件应该被忽略。
呼..最后,我都做到了。 我用了两个UiViews亚型(顶部和底部)。
我面临的主要挑战是关于边界,因为如果我的边界设置为我的两个视图(顶部和底部),它不会显示为一个单一的容器项目。 :)
我做的步骤:
创建了两个UIView的子类 。 让我们致电冠捷和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方法绘制BottomView 三个断点 (上,右,左)为冠捷和两个完整的边框 (底部,右), 两个部分的边界 (左上,右上图)。
见我TOPVIEW类在这里 。
见我BottomView类在这里 。
谢谢大家。
输出 :
它应该能够创建具有CAShapeLayer作为层的图。
制作的UIView的子类,并覆盖layerClass方法:
+ (Class)layerClass {
return [CAShapeLayer class];
}
然后在viewDidLoad中,你可以指定bezierPath到shapeLayer:
- (void)viewDidLoad {
[(CAShapeLayer *)self.layer setPath:someBezierPath.CGPath];
[self.layer setBackgroundColor:[UIColor redColor].CGColor];
}