2016-03-03 17 views
12

Như chúng ta đã biết, bảng phân tách chế độ xem rất mỏng và đẹp. Đôi khi chúng tôi phải xây dựng một số dòng phân cách trong bảng phân cảnh hoặc nib, số min là 1, nhưng thực sự dòng xuất hiện dày hơn nhiều so với chúng tôi mong đợi.
Câu hỏi của tôi là cách vẽ đường thẳng 1px trong bảng phân cảnh?Làm thế nào để vẽ một dòng 1px trong storyBoard?

+0

Bản sao có thể có của [Vẽ một đường thẳng 1 pixel chính hãng, iOS7] (http://stackoverflow.com/questions/22745522/draw-a-genuine-1-pixel-line-ios7) – iSkore

+1

[thử giải pháp này] (http: // stackoverflow.com/a/26868504/1219956) cho một dòng chiều cao 1 pixel thực tế và không phải là một đường cao 1 điểm giống như phần còn lại của những câu trả lời này dường như đang cho – Fonix

+0

Nhờ tất cả các câu trả lời. Tất cả đều giúp tôi rất nhiều, và tôi đã tìm thấy một số cách, cuối cùng tôi nghĩ rằng câu trả lời của Fonix và childrenOurFuture làm việc cho tôi. –

Trả lời

4

Tôi nhận điểm của bạn quá, cuối cùng tôi tìm thấy lối ra.
Như chúng ta đã biết, nếu chúng ta vẽ một đường thẳng và đặt chiều cao theo mã, chúng ta có thể thiết lập chiều cao bằng (1.0/[UIScreen mainScreen] .scale).
Nhưng ở đây, bạn muốn vẽ trong bảng phân cảnh.
Cách của tôi là phân lớp UIView hoặc UIImageView, dựa trên nhu cầu của bạn là OnePXLine. Trong lớp OnePXLine, ghi đè layoutSubviews như dưới đây:

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

Và bạn có thể vẽ 1 đường px trong kịch bản bằng cách sử dụng lớp này.
Goodluck!

1

bạn có thể làm như thế nào trong bất kỳ UIControl/UIElement cho điều này và thay đổi chiều cao như 1

nếu bạn muốn 1 điểm sử dụng này - 1

nếu bạn muốn 1pixel Sử dụng này - 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]; 

Swift

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

nếu bạn muốn có một thêm thông tin xem này once

+0

về mặt kỹ thuật này sẽ không cao 1px, nhưng sẽ là 1 chiều cao, vì tùy thuộc vào mật độ hiển thị, trên thiết bị @ 2x này thực sự dày 2 pixel, nhưng có thể OP không thực sự muốn một đường cao 1 pixel nhưng chiều cao 1 pt – Fonix

+0

@Fonix - hãy kiểm tra câu trả lời được cập nhật –

1

bạn có thể gán giá trị float để xem khung. do đó, những gì bạn có thể làm là xem bất kỳ dạng xem nào (lable, textview, view, textfield) và gán chiều cao là 0.4f hoặc một cái gì đó có lập trình và chiều rộng để phù hợp với chiều rộng tự.

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

Điều này sẽ giúp bạn nếu bạn đang mã hóa trong 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 
    } 
1

Hãy thử nó trong 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]; 
0

Xcode 9 Swift: Bạn có thể thêm seperator mỏng với dòng 1px trong Storyboard sử dụng UIView.

Dưới Kích Inspector, Chỉ cần thiết lập chiều cao đến 1, ví dụ chiều rộng để 360.

enter image description here

tài liệu của Apple trên UIView.

Các vấn đề liên quan