Storyboard나 xib로 UIView의 테두리·각환 설정을 한다(Objective-C)
6363 단어 XcodeiOSObjective-C
할 일
UIView의 테두리·각환 설정은 자주 있다고 생각합니다.
일일이 코드로 쓰는 것 귀찮네요.
여기를 Storyboard나 xib 등의 Interface Builder측에서 설정할 수 있도록 하고 싶습니다.
이 기사는 Objective-C 버전입니다.
Swift 버전은 여기입니다.
대응 정책
UIView의 카테고리를 작성해, UIView의 서브 클래스에 대해 IB측에서의 테두리·각환 설정을 가능하게 합니다.
샘플 코드
IB에서 설정하고 싶은 프로퍼티를 기재해 갑니다.
이번에는 테두리・각환에 관한 하기 프로퍼티를 추가했습니다.
UIView+Border.h
#import <UIKit/UIKit.h>
@interface UIView (Border)
@property (nonatomic) IBInspectable UIColor *borderColor;
@property (nonatomic) IBInspectable CGFloat borderWidth;
@property (nonatomic) IBInspectable CGFloat cornerRadius;
@end
UIView+Border.m
#import "UIView+Border.h"
@implementation UIView (Border)
// 枠線の色
- (UIColor *)borderColor
{
return [UIColor colorWithCGColor:self.layer.borderColor];
}
- (void)setBorderColor:(UIColor *)borderColor
{
self.layer.borderColor = borderColor.CGColor;
}
// 枠線のWidth
-(CGFloat)borderWidth
{
return self.layer.borderWidth;
}
- (void)setBorderWidth:(CGFloat)borderWidth
{
self.layer.borderWidth = borderWidth;
}
// 角丸設定
-(CGFloat)cornerRadius
{
return self.layer.cornerRadius;
}
- (void)setCornerRadius:(CGFloat)cornerRadius
{
self.layer.cornerRadius = cornerRadius;
self.layer.masksToBounds = cornerRadius > 0;
}
@end
테두리의 색상은 CGColor이므로주의하시기 바랍니다.
IB 측에서는 UIColor가 설정되므로 setter로 CGColor로 하고 있습니다.
그리고는 사용하고 싶은 클래스로 임포트 하면 됩니다.
IBInspectable
위 코드와 같이 속성에 IBInspectable을 부여하면,
Xcode 유틸리티 영역 (오른쪽 창)의 Attributes Inspector에서 위의 속성을 추가합니다.
그리고는 IB상에서 설정해 갈 뿐입니다.
테두리·각환 설정의 코드는 필요 없게 되고, 그 설정을 위해서만의 IBOutlet도 불필요하게 됩니다.
마지막으로
지금까지는 위의 설정을 코드로 실시했습니다.
하지만 그 설정을 위해서만 IBOutlet에서의 연결을 하거나 비슷한 코드를 여러 번 쓰는 것은 비효율적이라고 생각하도록.
어떻게 될까요? 라고 동료에게 상담한 바, 본 기사와 같은 것이 가능한 것을 가르쳤습니다.
그것을 실제로 시도한 것이 계기입니다.
UIView를 계승하고 있는 클래스라면, 부품을 추가한 것만으로 범용적으로 사용할 수 있는 것이 좋은 곳이라고 생각합니다.
이 기사의 Swift 버전은 여기입니다.
Reference
이 문제에 관하여(Storyboard나 xib로 UIView의 테두리·각환 설정을 한다(Objective-C)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ktaguchi/items/92b6bd5856ab489fea22텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)