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

30

我想在Interface Builder中绘制一个简单的插入线,以分隔列表中的一些项并使界面更加整洁。我在对象库中没有看到任何“line”或类似的对象,并且在Interface Builder中似乎找不到任何绘图命令。

8个回答

69

我使用非常窄的UIView,其中backgroundColor设置为合适的颜色。


这是否违反了苹果的任何指南?你使用这种解决方法的应用程序是否已通过苹果的审批流程? - Kongress
不,这并不违反任何指南,我的应用已经获得批准。 - Drew C

7

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


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];

1
不妨使用标签并设置适当的背景颜色,而不是使用视图。

1
一个UILabel继承自UIView。所以你基本上是在做同样的事情。而且,由于一行中没有文本,你不需要UILabel带来的额外功能。 - Matt Becker

0

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


0

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

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


0

我使用了一个视图,将其变窄并改变了颜色,使其看起来像一条线。但我的问题是,我在垂直滚动视图上使用了这条线,而线条也会随着滚动而移动。


0
Interface Builder不允许你绘制内嵌线所必需的阴影。如果你使用Photoshop,你肯定了解这一点。
以下代码将在白色/米色背景前绘制一个“内嵌”线条。
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>。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接