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