在iOS中定制形状(倒T)镶嵌Uiview

我必须在iOS上创build一个自定义形状(倒T)的边界Uiview。 我附上下面的截图。 我研究了很多,我从这里find了使用UIBezierPath的方法。

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

倒立的T

UIView总是矩形的。 从文档:

UIView类定义了屏幕上的一个矩形区域和用于pipe理该区域内容的接口。

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

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

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

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

我做的步骤:

创build了两个UiView子类 。 让我们调用topViewbottomView

  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绘制了三个边框 (top,right,left)和两个完整的边框 (bottom,right), 两个部分边框 (top top,right right)。

在这里看到我的TopView类。

在这里看到我的BottomView类。

谢谢大家。

输出

自定义UiView

应该可以创build一个CAShapeLayer作为图层的视图。

创buildUIView的子类并覆盖layerClass方法:

 + (Class)layerClass { return [CAShapeLayer class]; } 

然后在viewDidLoad中,您可以指定shapeLayer的bezierPath:

 - (void)viewDidLoad { [(CAShapeLayer *)self.layer setPath:someBezierPath.CGPath]; [self.layer setBackgroundColor:[UIColor redColor].CGColor]; }