2016-03-03 13 views
12

Jak wiemy, separator widoku tabeli jest tak cienki i piękny. Czasami musimy zbudować trochę linii separatora w storybooku lub stalówce, min liczba to 1, ale w rzeczywistości linia wydaje się znacznie grubsza niż się spodziewaliśmy.
Moje pytanie brzmi: jak narysować linię 1px w storybooku?Jak narysować linię 1px w storyBoard?

+0

Prawdopodobny duplikat [Rysuj oryginalną 1-pikselową linię, iOS7] (http://stackoverflow.com/questions/22745522/draw-a-regularne-1-pixel-line-ios7) – iSkore

+1

[spróbuj tego rozwiązania] (http: // stackoverflow.com/a/26868504/1219956) dla rzeczywistej linii o wysokości 1 piksela, a nie 1-punktowej linii wysokości, podobnie jak pozostałe odpowiedzi wydają się dawać – Fonix

+0

Dzięki wszystkim odpowiedziom. Wszystko mi bardzo pomogło i znalazłem kilka sposobów wyjścia, w końcu myślę, że odpowiedź Fonixa i childrenOurFuture działa dla mnie. –

Odpowiedz

4

mam punkt zbyt wreszcie znajdę wyjście.
Jak wiemy, jeśli narysujemy linię i ustawimy wysokość według kodu, możemy ustawić wysokość równą (1.0/[UIScreen mainScreen] .scale).
Ale tutaj chcesz narysować scenorys.
Moja droga to podklasa UIView lub UIImageView, w zależności od Twojego zapotrzebowania jako OnePXLine. W OnePXLine klasy zastępują layoutSubviews jak poniżej:

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

I można narysować linię 1 px w serii ujęć, poprzez zastosowanie tej klasie.
Goodluck!

1

można zrobić, jak w każdym UIControl/UIElement do tego i zmienić wysokość jak 1

jeśli chcesz 1 punkt to wykorzystać - 1

jeśli chcesz 1pixel Użyj tego - 1.0/UIScreen.mainScreen().scale

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

jeśli chcesz więcej informacji zobacz once

+0

to technicznie nie będzie wysokość 1px, ale będzie 1 pkt wysokość linii, ponieważ w zależności od gęstości wyświetlania, na @ 2x urządzeń to faktycznie ma 2 mm grubości na przykład, ale może OP rzeczywiście nie chce 1 wysokość linii pikseli ale wysokość 1 pt. – Fonix

+0

@Fonix - sprawdź zaktualizowaną odpowiedź –

1

można przypisać wartość pływaka do widoku ramki. więc możesz zrobić dowolny widok (label, textview, widok, pole tekstowe) i przypisać wysokość jako 0.4f lub coś programowo i szerokość, aby dopasować szerokość siebie.

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

To ci pomoże, jeśli jesteś kodowania w 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

Spróbuj w 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: Możesz dodać cienką separator z linią 1px w serii ujęć, stosując UIView.

Pod Rozmiar Inspektora Wystarczy ustawić wysokość, szerokość do 1 przykład 360.

enter image description here

dokumentacji Apple na UIView.

Powiązane problemy