在iOS中定制形状(倒T)镶嵌Uiview
我必须在iOS上创build一个自定义形状(倒T)的边界Uiview。 我附上下面的截图。 我研究了很多,我从这里find了使用UIBezierPath的方法。
但我没有想到把我的视angular塑造成倒T形。
UIView
总是矩形的。 从文档:
UIView类定义了屏幕上的一个矩形区域和用于pipe理该区域内容的接口。
即使视图被限制为矩形,也可以用任何你喜欢的方式来塑造你的活动区域。 通过将其与透明背景相结合,您可以模拟任何可以绘制的形状的视图。
当您的矩形视图接收到触摸和其他事件时,您的事件处理程序应首先检查活动是否发生在倒T区域。 如果活动在外面,则该事件应该被忽略。
唷..最后我已经做到了。 我使用了两个UiViews子类(顶部和底部) 。
我面临的主要挑战是关于边框,因为如果我将边框设置为我的两个视图(顶部和底部),它将不会显示为单个容器项目。 🙂
我做的步骤:
创build了两个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方法为BottomView绘制了三个边框 (top,right,left)和两个完整的边框 (bottom,right), 两个部分边框 (top top,right right)。
在这里看到我的TopView类。
在这里看到我的BottomView类。
谢谢大家。
输出 :
应该可以创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]; }