4

我必须在 iOS 上创建一个自定义形状(倒 T)边框的 Uiview。我附上下面的屏幕截图。我进行了很多研究,并从这里找到了使用UIBezierPath的方法。

但是我没有任何想法将我的视图塑造成倒 T 形。

倒镶边T

4

3 回答 3

6

UIViews 总是矩形的。从文档中:

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

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

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

于 2012-08-21T15:46:25.490 回答
4

呼……终于我做到了。我使用了两个 UiViews 子类(顶部和底部)

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

我做的步骤:

创建了两个 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方法为TopView绘制了三个边框(上、右、左),为BottomView 绘制两个完整边框(下、右)、两个部分边框(左上、右上) 。

在这里查看我的 TopView 课程。

在这里查看我的 BottomView 课程。

谢谢大家。

输出

自定义 UIView

于 2012-08-22T12:27:38.383 回答
3

应该可以创建一个以 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];
}
于 2012-08-21T15:52:05.040 回答