UIView
을 서브 클래스 화하고 drawRect:
메소드를 수정하여 반지름을 허용해야합니다. 10.0px의 고정 반경 drawRect:
의 코드 샘플의 경우,이 시도 : 그래서
- (void)drawRect:(CGRect)rect {
float radius = 10.0f;
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 255,255,255,0.25);
CGContextMoveToPoint(context, rect.origin.x, rect.origin.y + radius);
CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y + rect.size.height - radius);
CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + rect.size.height - radius,
radius, M_PI/4, M_PI/2, 1);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width - radius,
rect.origin.y + rect.size.height);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius,
rect.origin.y + rect.size.height - radius, radius, M_PI/2, 0.0f, 1);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + radius);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + radius,
radius, 0.0f, -M_PI/2, 1);
CGContextAddLineToPoint(context, rect.origin.x + radius, rect.origin.y);
CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + radius, radius,
-M_PI/2, M_PI, 1);
CGContextFillPath(context);
}
이 작업을 수행하는 가장 좋은 방법이 될 것입니다
@property CGFloat radius;
헤더 파일에
및 재정의를 추가 할 수 기본 생성자는 읽기 :
-(id) initWithFrame:(CGRect)aRect radius:(CGFloat)rad color:(UIColor *)bgColor opacity:(CGFloat)opacity {
if (self = [super initWithFrame:aRect]) {
[self setOpacity:opacity];
[self setBackgroundColor:bgColor];
[self setRadius:rad];
}
}
을 모든 radius
통화 self.radius
의,635 제거를 포함하는 내 위의 방법을 조정할상단에 선언.
나를 위해 잘 작동합니다. Adobe Illustrator를 사용하여 64x64 흰색 직사각형을 만들었습니다. 나는 그것을 70 % 불투명하게 만들었고, 32px로 깃털을 내고, 72dpi와 144dpi의 두 가지 버전을 내 보냈다. 코드에서로드하고 [image stretchableImageWithLeftCapWidth : 32 topCapHeight : 32]로 변환 한 다음 이제 마음에 두었던 것을 정확히 그릴 수 있습니다. 감사! –