2016-06-22 7 views
5

에 대한 사용자 정의 클래스를 생성하여 탭 영역을 늘리고 있습니다. 그 사용자는 스토리 보드 자체에 패딩을 입력 할 수 있어야합니다. 그래서 IBInspectable 속성을 만듭니다.IBInutpectable UIEdgeInsets가 IBOutlet에 표시되지 않습니다.

@IBDesignable class UIIconButton: UIButton { 
    @IBInspectable var touchPadding:UIEdgeInsets = UIEdgeInsetsZero 
} 

그러나 스토리 보드에는 표시되지 않습니다. 그러나 CGRect으로 바꾸면 스토리 보드에 표시됩니다.

답변

15

Xcode 7부터 Interface Builder는 @IBInspectable (버머!)로 UIEdgeInsetsZero을 인식하지 못합니다.

간접적 에지 세트를 설정 CGFloat 속성을 사용하여, 그러나,이 문제를 해결 할 수 있습니다 :이 올바르게 인터페이스 빌더 내에서 bottomInset, leftInset 등이 표시됩니다

public class UIIconButton: UIButton { 

    @IBInspectable public var bottomInset: CGFloat { 
    get { return touchPadding.bottom } 
    set { touchPadding.bottom = newValue } 
    } 
    @IBInspectable public var leftInset: CGFloat { 
    get { return touchPadding.left } 
    set { touchPadding.left = newValue } 
    } 
    @IBInspectable public var rightInset: CGFloat { 
    get { return touchPadding.right } 
    set { touchPadding.right = newValue } 
    } 
    @IBInspectable public var topInset: CGFloat { 
    get { return touchPadding.top } 
    set { touchPadding.top = newValue } 
    } 

    public var touchPadding = UIEdgeInsetsZero  
} 

.

+0

이 솔루션을 사용하려면 몇 시간 정도 걸렸습니다. – Urban