在uiviewcontroller的视图中绘制水平和垂直线

时间:2012-01-29 09:36:48

标签: iphone ios uiviewcontroller

我有一个带有一些图像的UIViewController。我需要在图像之间绘制一些水平和垂直线。实际上它就像一个层次结构视图。添加带有背景颜色的子视图是最好的方法吗?

4 个答案:

答案 0 :(得分:4)

您有3种基本方法:

  1. 在自定义UIView子类中使用QuartzCore并覆盖drawRect:
  2. 设置包含每个图像的UIImageView图层属性的borderWidth和borderColor
  3. 为水平线创建高度为1的UIViews,为垂直线创建宽度为1的UIViews,设置视图的backgroundColor并将其添加为子视图
  4. 3可能是最容易实现的,但不是最优雅的,1在内存方面最强大,因为您也可以使用drawInRect将图像绘制到相同的图形上下文中。这会将视图层次结构折叠为单个视图。

答案 1 :(得分:3)

您可以按照上面的说法使用图层来完成,或者只是因为您只需要线条,请使用UIViews

就像这样

for(i=0;i<numberOfLine*heightofImage;i+=heightOfImage) {
    UIView *horizontalLine=[[UIView alloc]initWithFrame:CGRectMake(x, i, height, 1)];
    [self.view addSubView:horizontalLine];
}

希望有所帮助

答案 2 :(得分:1)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIView *verticalLine = [[UIView alloc] initWithFrame:CGRectMake(roundf(self.view.bounds.size.width / 2), 0.0, 1.0, self.view.bounds.size.height)];
    verticalLine.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];
    verticalLine.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin;
    [self.view addSubview:verticalLine];

    UIView *horizontalLine = [[UIView alloc] initWithFrame:CGRectMake(0.0, roundf(self.view.bounds.size.height / 2), self.view.bounds.size.width, 1.0)];
    horizontalLine.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];
    horizontalLine.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
    [self.view addSubview:horizontalLine];
}

答案 3 :(得分:0)

我使用了Magic Bullet Dave发布的第3个选项,效果很好。这是代码:

UIView *borderBottom = [[UIView alloc] initWithFrame:CGRectMake(0.0, 10, widthDesired, 1.0)];
borderBottom.backgroundColor = [UIColor grayColor];
[myView addSubview:borderBottom];

如果你想制作一条垂直线,你只需要使用1的宽度,然后使用所需的高度。