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