如何在storyBoard中绘制1px行?

时间:2016-03-03 06:16:20

标签: ios

众所周知,表格视图分隔符非常薄且美观。有时我们必须在storyboard或nib中构建一些分隔线,最小数字为1,但实际上该线看起来比我们预期的要厚得多。
我的问题是如何在故事板中绘制1px线?

7 个答案:

答案 0 :(得分:6)

我也明白了你的观点,最后我找到了出路 我们知道,如果我们画一条线并按代码设置高度,我们可以设置高度等于(1.0 / [UIScreen mainScreen] .scale)。
但在这里,你想画故事板。
我的方式是子类UIView或UIImageView,基于您作为OnePXLine的需求。在OnePXLine类中,覆盖layoutSubviews,如下所示:

- (void)layoutSubviews {
     [super layoutSubviews];
     CGRect rect = self.frame;
     rect.size.height = (1 / [UIScreen mainScreen].scale);
     self.frame = rect;
}

您可以使用此课程在故事板中绘制1 px行 古德勒克!

答案 1 :(得分:3)

如果您使用Swift进行编码,这将对您有所帮助:

    func lineDraw(viewLi:UIView)
    {
            let border = CALayer()
            let width = CGFloat(1.0)
            border.borderColor = UIColor(red: 197/255, green: 197/255, blue: 197/255, alpha: 1.0).CGColor
            border.frame = CGRect(x: 0, y: viewLi.frame.size.height - width, width:  viewLi.frame.size.width, height: viewLi.frame.size.height)
            border.borderWidth = width
            viewLi.layer.addSublayer(border)
            viewLi.layer.masksToBounds = true
    }

答案 2 :(得分:3)

Xcode 9 Swift:您可以使用UIView在故事板中添加1px行的精简分隔符。

在“大小检查器”下,只需将高度设置为1,将宽度示例设置为360。

enter image description here

关于UIView的Apple文档。

答案 3 :(得分:1)

您可以在任何UIControl / UIElement中执行此操作,并将高度更改为1

如果你想1点使用它 - 1

如果你想1像素使用这个 - 1.0 / UIScreen.mainScreen().scale

<强>目标C

UIView *LineView=[[UIView alloc]initWithFrame:CGRectMake(0, 50, self.view.frame.size.width, 1)]; // customize the frame what u need
[LineView setBackgroundColor:[UIColor yellowColor]]; //customize the color
[self.view addSubview:LineView];

<强>夫特

var LineView=UIView(frame: CGRectMake((0, 50, self.view.frame.size.width, 1))
LineView.backgroundColor=UIColor.yellowColor()
self.view.addSubview(LineView)

如果您想了解更多信息,请参阅此once

答案 4 :(得分:1)

您可以为视图框指定浮点值。所以你可以做的是采取任何视图(标签,文本视图,视图,文本字段)并将高度指定为0.4f或以编程方式和宽度匹配自身宽度。

lable.frame = CGRectMake(0,0,width of self.view,0.4f);

答案 5 :(得分:1)

在cellForRowAtIndex中尝试

UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 1)];
separatorLineView.backgroundColor = [UIColor colorWithRed:242/255.0f green:222/255.0f blue:52/255.0f alpha:1.0];
[cell.contentView addSubview:separatorLineView];

答案 6 :(得分:0)

Swift 5 代码基于@childrenOurFuture 的回答:

class OnePXLine: UIView {
    override func layoutSubviews() {
        super.layoutSubviews()
        var rect = self.frame;
        rect.size.height = (1 / UIScreen.main.scale);
        self.frame = rect;
    }
}