2015-04-11 16 views
9

Tworzę UILabel do którego ustawić kolor tła i promień narożny z następującego kodu:UILabel kolor tła Przecieki do granicy

self.scoreLabel.backgroundColor = [UIColor DISRed];// custom red` 
self.scoreLabel.layer.masksToBounds = YES; 
self.scoreLabel.layer.cornerRadius = self.scoreLabel.frame.size.width/2; 
self.scoreLabel.layer.borderWidth = 8.0; 
self.scoreLabel.layer.borderColor = [[UIColor DISNavy] CGColor]; 

Jednak wydaje kolor tle, aby być wyciek z krawędzią obramowanie (patrz zdjęcie). Jakieś pomysły, dlaczego? Każdy pomysł, jak to naprawić?

enter image description here

+0

Musisz przyznać, że do tej pory wybrałeś łatwą drogę. Używasz wbudowanej podklasy widoków (UILabel) i pozwalasz, aby proste komendy warstwy wykonywały dla ciebie całą pracę i miały nadzieję na najlepsze. Jeśli chcesz mieć liczbę w kręgu, dlaczego nie wyciągniesz liczby w kółko? Tak, zajmuje trochę więcej kodu, ale teraz masz całkowitą kontrolę nad tym, co zobaczy użytkownik. – matt

+2

Przyznaję, że to proste wyjście. dlaczego najpierw miałbym spróbować? jeśli nie ma prostego sposobu na osiągnięcie tego przy pomocy tego podejścia, rozważę inną opcję. –

+0

Widzisz, myślę, że samo rysowanie jest prostsze. – matt

Odpowiedz

0

stworzyłem UILabel tak i kolor tła nie wydają się być nieszczelne ..

1) Napisz to w pliku .h swojego projektu.

UILabel *label; 

2) Napisz to w pliku .m swojego projektu.

label=[[UILabel alloc]initWithFrame:CGRectMake(100, 300, 100, 100)];//Set frame of label in your viewcontroller. 
[label setBackgroundColor:[UIColor redColor]];//Set background color of label. 
[label setText:@"Label"];//Set text in label. 
[label setTextColor:[UIColor blackColor]];//Set text color in label. 
[label setTextAlignment:NSTextAlignmentCenter];//Set text alignment in label. 
[label.layer setCornerRadius:50.0];//Set corner radius of label to change the shape. 
[label.layer setBorderWidth:8.0f];//Set border width of label. 
[label setClipsToBounds:YES];//Set its to YES for Corner radius to work. 
[label.layer setBorderColor:[UIColor greenColor].CGColor];//Set Border color. 
[self.view addSubview:label];//Add it to the view of your choice. 
1

Wpadłem na ten sam problem z kolorem tła UIBUTTON, który wyciekał dookoła krawędzi.

Zamiast ustawiać kolor tła UIButton na Uibuttonie, należy ustawić go na warstwie Uibutton.

Wymienić:

self.scoreLabel.backgroundColor = [UIColor DISRed];// custom red` 

z tym:

self.scoreLabel.layer.backgroundColor = [[UIColor DISRed] CGColor];// custom red` 
+2

nie naprawił tego dla mnie. :(Czy wiesz, jaka jest główna przyczyna problemu? –

+0

TO NIE DZIAŁA! – coolcool1994

0

Prawdopodobnie jest to kwestia anty aliasing. możesz go lepiej naprawić, dodając ścieżkę beziera dookoła narożników.

CAShapeLayer *subLayer = [[CAShapeLayer alloc] init]; 
[subLayer setFillColor:[UIColor clearColor].CGColor]; 
[subLayer setStrokeColor:[UIColor whiteColor].CGColor]; 
[subLayer setLineWidth:1.0]; 
[subLayer setPath:[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:imageView.layer.cornerRadius].CGPath]; 
[imageView.layer addSublayer:subLayer]; 
1

Miałem też ten sam problem. To był głupi błąd. Zawsze zapominam zaznaczyć clipToBounds w przypadku cornerRadius.

Po prostu zaznaczenie klipu do granic dla UILabel w Storyboard poprawiło mój problem.

I tak, musimy zachować poniższy kod też: "Każdy pomysł na jak to naprawić"

label.layer.masksToBounds = true