与自动布局一起绘制分隔线

tes*_*ing 5 border uiview uisplitviewcontroller ios autolayout

我重新计算了一些UISplitViewController.现在我需要在主视图和详细视图之间绘制一个分隔线.现在我有一些问题:

  • 分隔线应该在视图控制器本身上还是应该是一个单独的视图?
  • 那么自动布局呢?不允许设置框架.

我看到了解决方案CALayer/ CAShapeLayer,drawRect(CoreGraphics中)或使用的背景颜色UIView/ UILabel.根据那里的人们的说法,最后一个应该花费太多的性能.

一方面,在UITableViewController自己画线方面很舒服.或者应该单独UIView创建?如果我嵌入一个单独的UIView将有更多的约束,它会使事情复杂化(必须设置单独的宽度)...它也应该适应方向的变化(例如变化的大小UITableViewController- >分离线也应该调整大小) .

我怎样才能添加这样的划分规则?这样的划分规则可以在这里看到: 分隔线划分主视图和详细视图控制器

Fat*_*tie 7

如果你需要添加一个真正的像素线,不要愚弄图像.这几乎是不可能的.只要用这个:

@interface UILine : UIView
@end

@implementation UILine

- (void)awakeFromNib {

    CGFloat sortaPixel = 1 / [UIScreen mainScreen].scale;

    // recall, the following...
    // CGFloat sortaPixel = 1 / self.contentScaleFactor;
    // ...does NOT work when loading from storyboard!

    UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, sortaPixel)];

    line.userInteractionEnabled = NO;
    line.backgroundColor = self.backgroundColor;

    line.autoresizingMask = UIViewAutoresizingFlexibleWidth;

    [self addSubview:line];

    self.backgroundColor = [UIColor clearColor];
    self.userInteractionEnabled = NO;
}

@end
Run Code Online (Sandbox Code Playgroud)

如何使用:

实际上在故事板中,只需制作一个确切位置的UIView ,以及您想要的精确宽度.(可以照常使用约束/自动布局.)

让视图显示高五个像素,这样您就可以在工作时清楚地看到它.

将UIView 的顶部准确地放在您想要单像素线的位置.使UIView成为所需的线条颜色.

将班级更改为UILine.在运行时,它将在所有设备上的确切位置绘制完美的单像素线.

(对于垂直线类,只需修改CGRectMake.)

希望能帮助到你!