我需要在iOS上创建一个自定义形状(倒置的T形)带边框的UIView。 我在下面附上截图。 我进行了大量研究,并找到了一种使用UIBezierPath的方法,链接如下here。
但我没有任何想法将我的视图形状变成倒置的T形。
但我没有任何想法将我的视图形状变成倒置的T形。
UIView
一直是矩形的,从文档中可以看出:虽然视图被限制为矩形,但您可以按任何喜欢的方式塑造您的活动区域。通过将其与透明背景相结合,您可以模仿您可以绘制的任何形状的视图。
UIView
类定义了一个矩形区域以及管理该区域内容的接口。
drawRect
中绘制你的视图吗? - Sergey Kalinichenko哎呀,终于搞定了。我使用了两个UIView子类(顶部和底部)。
我面临的主要挑战是关于边框的问题,因为如果我将边框设置为我的两个视图(顶部和底部),它将不会显示为单个容器项。 :)
我所做的步骤:
创建了两个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 绘制了三个边框(上、右、左),并为 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];
}
UIView
?如果你试图防止视图遮挡下面的内容,为什么不在这个视图上面添加底层视图呢? - James