0

IB_DESIGNABLE に取り掛かっていますが、問題に遭遇しました。

IB でカスタム ビューの tintColor を設定すると、IB で正しい方法でレンダリングされます。

ここに画像の説明を入力

しかし、デバイスで実行すると、デフォルトの tintColor で表示されます。

ここに画像の説明を入力

#pragma mark - UIView

- (void)drawRect:(CGRect)rect {
    [self drawCircleRadius:MIN(rect.size.width / 2, rect.size.height / 2) - self.lineWidth / 2.f
                      rect:rect
                startAngle:self.startAngleRadians
                  endAngle:self.endAngleRadians
                 lineWidth:self.lineWidth];
}

#pragma mark - private methods

- (void)drawCircleRadius:(CGFloat)radius
                    rect:(CGRect)rect
              startAngle:(CGFloat)startAngle
                endAngle:(CGFloat)endAngel
               lineWidth:(CGFloat)lineWidth {
    UIBezierPath* bezierPath = [UIBezierPath bezierPath];
    [self.tintColor setStroke];
    [bezierPath addArcWithCenter:CGPointMake(rect.size.width / 2, rect.size.height / 2)
                          radius:radius
                      startAngle:startAngle
                        endAngle:endAngel
                       clockwise:YES];

    bezierPath.lineWidth = lineWidth;
    [bezierPath stroke];
}

違いは何ですか?デバイスではデフォルトの色合いで表示され、IB では正しく表示されるのはなぜですか?

アップデート:

#import <UIKit/UIKit.h>

IB_DESIGNABLE
@interface PKCircleView : UIView

@property (nonatomic, assign) IBInspectable CGFloat startAngleRadians;
@property (nonatomic, assign) IBInspectable CGFloat endAngleRadians;
@property (nonatomic, assign) IBInspectable CGFloat lineWidth;

@end
4

1 に答える 1