定制形(倒T)在IOS接壤的UIView(Custom shaped (inverted T) bo

2019-09-21 10:04发布

我要创建一个自定义形状(倒T)接壤的UIView iOS上。 我附上下面的截图。 我已经研究了很多,我发现使用UIBezierPath从方式在这里 。

但我没有得到任何的想法来塑造我的看法是倒T形。

Answer 1:

UIView s为矩形始终。 从文档:

UIView类定义了屏幕和用于管理该区域中的内容的界面上的矩形区域。

尽管视图限制为矩形,你​​可以塑造你喜欢的任何方式的活动区域。 通过结合使用透明背景,你可以模仿,你可以画出任何形状的视图。

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



Answer 2:

呼..最后,我都做到了。 我用了两个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类在这里 。

谢谢大家。

输出



Answer 3:

它应该能够创建具有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];
}


文章来源: Custom shaped (inverted T) bordered Uiview in iOS