2014-12-04 17 views
5

Szukałem i nadal nie mogę tego naprawić. Próbuję uzyskać okrągły obraz w systemie iOS 8. Przed Xcode 6, myślę, że odpowiedź byłaby własnością imageView.layer.cornerRadius. Próbowałem już tego, ale w Xcode 6 i iOS 8 teraz przy użyciu Auto Layout, co moim zdaniem jest przyczyną problemu, wydaje się, że nie działa poprawnie. Kształt nie wychodzi jako koło, ale jako kształt przypominający oko lub zniekształcony owal, nigdy nie jest doskonałym kołem. Czy jest jeszcze inny sposób osiągnięcia tego przy pomocy Autolayout?Circular ImageView iOS 8/Xcode 6

+2

Narożnik Radius powinien być o połowę wyższy/wyższy niż okrąg. –

+0

Zastosuj wiązania o rozmiarze, tj. Szerokość i wysokość obrazu, i ustaw róg Radius = szerokość/2. Obrazek będzie kołem, jeśli width = height. – zaheer

+0

http://stackoverflow.com/a/27222863/3767017(by właściwość warstwy u można również zmienić geometrię) i http://stackoverflow.com/a/25616952/3767017 i bądź ostrożny o swojej ramie imageView. –

Odpowiedz

3

Sprawdź swoją wysokość i szerokość UIImageView. Powinno być takie samo. Jeśli nie, oni to robią. Po tym

imageView.layer.cornerRadius = imageView.frame.size.width/2; 

lub

imageView.layer.cornerRadius = imageView.frame.size.height/2; 

Obie linie pracować dla Ciebie.

+1

również powinieneś ustawić clipsToBounds na true. – tounaobun

2

Używam Xcode6 i i sprawdzam z ios8.

Twoje obrazy to height i width powinny być takie same.

Poniższy kod działa dobrze dla mnie.

yourImageView.layer.cornerRadius = img.frame.size.height /2; 
yourImageView.layer.masksToBounds = YES; 
yourImageView.layer.borderWidth = 0.1; 

Mam nadzieję, że to działa również dla Ciebie.

1

Spróbuj tego kodu, promień narożnika powinien być równy połowie szerokości lub wysokości podanego widoku zdjęcia i musi mieć kształt kwadratu.

Więc kod pójść jak ten

[self.photoView.layer setCornerRadius:CGRectGetHeight(self.photoView.frame)/2]; 
[self.photoView.layer setMasksToBounds:YES]; 

działa również grzywny ios 6 i powyżej, w tym iOS 8.

0

zaimplementować następujący kod będzie rozwiązać problem.

self.imageView.layer.cornerRadius = self.imageView.frame.size.width/2; 
self.imageView.clipsToBounds = YES; 

Jeśli to jest problem przez AutoLayout. Wyczyść ograniczenia, dodaj odstępy i zaznacz na Aspect ratio.