如何在Xcode 4中的界面构建器中绘制一条线

时间:2011-06-06 15:46:08

标签: iphone interface-builder xcode4

我想在Interface Builder中绘制一个简单的插入行来分隔列表中的某些项目,并使UI更加整洁。我在对象库中看不到任何“行”或类似对象,似乎无法在“界面”构建器中找到任何绘图命令。

8 个答案:

答案 0 :(得分:62)

我使用非常狭窄的UIView,backgroundColor设置为适当的颜色。

答案 1 :(得分:7)

iPhone UI库中没有行。 Max OS X上的此功能由NSBox提供,但在iPhone上没有相应的UI元素。

答案 2 :(得分:7)

如果您担心UIView可能会影响性能,您可以使用CoreGraphics的CAShapeLayers在代码中绘制一行。

每个UIView都有一个CALayer,所以画线并将其添加到视图CALayer中。 您可以在自定义UIView的drawRect或视图控制器中执行此操作:

(确保将Quartz框架添加到您的项目中)

UIBezierPath *linePath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0,self.view.frame.size.width, 1)];

//shape layer for the line
CAShapeLayer *line = [CAShapeLayer layer];
line.path = [linePath CGPath];
line.fillColor = [[UIColor blackColor] CGColor];
line.frame = CGRectMake(xPosition, yPosition, self.view.frame.size.width,1);

[self.view.layer addSublayer:line];

答案 3 :(得分:1)

代替视图,为什么不使用标签并设置适当的背景颜色?

答案 4 :(得分:0)

我使用了一个视图并使其变窄了改变了颜色,使它看起来像一条线。但我的问题是我在垂直滚动视图上使用该行,并且行也会滚动。

答案 5 :(得分:0)

Interface Builder不允许您绘制插入线所必需的阴影。如果你使用Photoshop,你就会知道这一点。

如果该行位于白色/米色背景前,则以下代码将绘制“inset”。

UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 1.0f)];
line.backgroundColor = [UIColor colorWithRed:(200.0f/255.0f) green:(200.0f/255.0f) blue:(200.0f/255.0f) alpha:1.0f];
line.layer.shadowColor = [UIColor darkGrayColor].CGColor;
line.layer.shadowOffset = CGSizeMake(0.0f, 1.0f);
line.layer.shadowRadius = 0.5f;
line.layer.shadowOpacity = 0.4f;
line.layer.masksToBounds =NO;
[Background addSubview:line];

记得导入< QuartzCore / QuartzCore.h>

答案 6 :(得分:0)

作为一个指示 - 在Interface Builder中,添加一个视图,其高度设置为2个点。将IBOutlet连接到该视图并设置其图层边框颜色和宽度:

self.mySeparatorLine.layer.borderWidth = 1.0f; self.mySeparatorLine.layer.borderColor = [UIColor lightGrayColor] .CGColor;

答案 7 :(得分:0)

您可以将“进度视图”用作水平线的选项。只需更改色泽颜色并进展为1,即100%。