2016-05-31 4 views
2

저는 일을하고, 신속하게 작업을 수행하기 위해 전체 UIAppearance 접근 방식에 대해 상당히 새롭습니다. 밖에있는 문서가 아니라 만세. 내가의 라인을 따라 뭔가 UIAppearance를 통해 내 경계 반경을 설정하기 위해 노력하고있어스위프트에서의 UIA 모양 및 둥근 테두리

:

CircleButton.appearance.roundBorderRadius = 9 

내 CircleButton 클래스 구현 :

public class CircleButton : UIButton{ 
    @nonobjc var roundBorderRadius: CGFloat? { 
     get { return self.layer.cornerRadius } 
     set { 
      self.layer.cornerRadius = newValue! 
     } 
    } 
} 

그리고 난에 스토리 보드에서 모든 후크 CircleButton이 포함 된 ViewController입니다. 편집 또는 빌드 오류가 없습니다.

CircleButton.appearance.roundBorderRadius = 9 

어떤 조언 :

"스레드 1 : EXC_BAD_ACCESS"에 오류

그러나, 런타임에 내가 받고 있어요?

+0

당신은에 비 'UIAppearance' 기반의 접근 방식을 시도 할 수 있습니다 중첩 된 객체의 속성을 직접 사용하는 스타일. 구성 가능하고 재사용 가능한 스타일을 가진 마이크로 프레임 워크 중 하나는 [StyleSheet] (https://github.com/werediver/StyleSheet)입니다. – werediver

답변

3

@nonobjc를 제거하고 dynamic를 추가, 다음 CGFloatCGFloat?에서 유형을 변경하고과 같이, 세터에 newValue!을 제거 :

public class CircleButton : UIButton { 
    dynamic var roundBorderRadius: CGFloat { 
     get { return self.layer.cornerRadius } 
     set { 
      self.layer.cornerRadius = newValue 
     } 
    } 
} 
+1

감사합니다. – ephilip

관련 문제