2017-04-14 1 views
0

내가 같은 사용자 지정보기에 일반적으로 cornerRadius을 적용하고보기에 영향을주지 않습니다의 UIView의 CornerRadius를 균등하게

self.layer.cornerRadius = self.frame.size.height/2

그러나, 나는 UIView에 결과 코너가 고르게 적용되지 않는 것으로 나타났습니다. 특히 첨부 된 사진에서 볼 수 있듯이 맨 위는 맨 아래 부분보다 먼저 모서리에 페이드를 시작합니다. 이것이 확대되는 동안 평평하지 않은 코너링은 일반적인보기 수준에서도 보입니다. enter image description here

누구든지이 문제를 해결할 수 있었습니까?

+0

호기심에서 벗어나 언제 그런 상세한 검사가 발생합니까? – Rikh

+0

보기의 높이는 얼마입니까? – CoolPenguin

+0

'viewDidLoad'에 다음 코드'self.layer.cornerRadius = self.frame.size.height/2'을 넣으려는 시도 일 수 있습니다. 'viewDidLayoutSubviews'에 넣으십시오. – Dhiru

답변

1

어디에서이 라인을 호출합니까?

self.layer.cornerRadius = self.frame.size.height/2 

이 버그는 보통 cornerRadius가 FINAL 크기의 절반이 아닌 경우에 발생합니다. 예 : viewDidLoad에서 이것을 설정하면 self의 높이가 100이고 cornerRadius는 50이지만 자체 레이아웃 후에 높이가 90이되면 cornerRadius는 여전히 50입니다.

해결 방법에는 두 가지가 있습니다 : 당신은 높이 제약 조건을 고정 사용하는 경우

  1. , 어디서든 CornerRadius를 설정할 수 있습니다 당신이 원하는 : self.layer.cornerRadius = self.someHeightConstraint.constraint/2

  2. 당신이 CornerRadius를 설정하지 않은 경우 보기가 완료되면 레이아웃 (superview의 viewDidLayoutSubviews)

+0

이것은 문제의 가능한 원인처럼 보였습니다. 그래서 1. cornerRadius를 고정 숫자로 설정하고 2. layoutSubviews를 호출하십시오. 그러나 문제는 계속됩니다. 더 많은 코드를 붙이면 기쁠 것입니다. 뷰 계층 구조는 다음과 같습니다 : 1.'tableViewCell.containerView' -> 2. 2.'foregroundView' -> 3.'graphicView' 문제는'graphicView'에 있습니다. – daspianist

관련 문제