我必须在 iOS 上创建一个自定义形状(倒 T)边框的 Uiview。我附上下面的屏幕截图。我进行了很多研究,并从这里找到了使用UIBezierPath的方法。
但是我没有任何想法将我的视图塑造成倒 T 形。
我必须在 iOS 上创建一个自定义形状(倒 T)边框的 Uiview。我附上下面的屏幕截图。我进行了很多研究,并从这里找到了使用UIBezierPath的方法。
但是我没有任何想法将我的视图塑造成倒 T 形。
UIView
s 总是矩形的。从文档中:
UIView 类定义了屏幕上的一个矩形区域以及用于管理该区域内容的接口。
即使视图仅限于矩形,您也可以以任何您喜欢的方式塑造您的活动区域。通过将其与透明背景相结合,您可以模仿可以绘制的任何形状的视图。
当您的矩形视图接收到触摸和其他事件时,您的事件处理程序应首先检查活动是否发生在倒 T 区域中。如果活动在外面,则应忽略该事件。
呼……终于我做到了。我使用了两个 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];
我通过覆盖drawRect方法为TopView绘制了三个边框(上、右、左),为BottomView 绘制了两个完整边框(下、右)、两个部分边框(左上、右上) 。
在这里查看我的 TopView 课程。
在这里查看我的 BottomView 课程。
谢谢大家。
输出:
应该可以创建一个以 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];
}