Как нарисовать линию 1px в storyBoard?

Как мы знаем, разделитель табличных окон настолько тонкий и красивый. Иногда нам приходится строить некоторую разделительную линию в раскадровке или nib, минимальное число равно 1, но на самом деле линия кажется намного более толстой, чем мы ожидали.
Мой вопрос заключается в том, как нарисовать линию 1px в раскадровке?

Ответы

Ответ 1

Я тоже получил вашу мысль, наконец, я нашел выход.
Как мы знаем, если мы нарисуем линию и установим высоту по коду, мы можем установить высоту, равную (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 в раскадровке, используя этот класс.
Удачи!

Ответ 2

Это поможет вам, если вы кодируете в 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
    }

Ответ 3

Xcode 9 Swift: вы можете добавить тонкий разделитель с линией 1px в UIView используя UIView.

В разделе "Инспектор размеров" Просто установите высоту в 1, пример ширины - 360.

enter image description here

Документация Apple по UIView.

Ответ 4

вы можете сделать это как в любом UIControl/UIElement для этого и изменить высоту как 1

если вы хотите использовать 1 пункт, используйте это - 1

если вы хотите использовать 1pixel Используйте это - 1.0/UIScreen.mainScreen().scale

Objective-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)

если вы хотите получить более подробную информацию об этом один раз

Ответ 5

вы можете присвоить значение float для рамки представления. поэтому вы можете сделать любое представление (lable, textview, view, textfield) и назначить высоту как 0.4f или что-то программно и ширину, чтобы соответствовать собственной ширине.

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

Ответ 6

Попробуйте в 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];