2015-05-31 2 views
0

Я попадаю в IB_DESIGNABLE, и я наткнулся на проблему.IB_DESIGNABLE tintColor issues

Когда я устанавливаю tintColor своего пользовательского представления с IB, он отображается в правильном порядке в IB.

enter image description here

Но когда я запускаю его на устройстве она отображается по умолчанию tintColor.

enter image description here

#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?

UPDATE:

#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 
+0

Я запустил ваш код, и он отлично работал в IB, симуляторе и на устройстве. Проблема должна быть где-то в другом месте. Может быть, показать свой файл заголовка для пользовательского представления? Вот то, что я использовал: '#import IB_DESIGNABLE @interface Круг: UIView @property (неатомической) IBInspectable двойной LineWidth; @property (неатомный) IBInspectable double startAngleRadians; @property (неатомный) IBInspectable double endAngleRadians; @ конец' – picciano

+0

@picciano да, похоже на то же. – BergP

ответ

0

Вопрос был на этой линии

self.tintColor = [UIColor defaultDwonloadButtonBlueColor]; 

:

static PKCircleView *CommonInit(PKCircleView *self) { 
    if (self != nil) { 
     self.backgroundColor = [UIColor clearColor]; 
     self.startAngleRadians = M_PI * 1.5; 
     self.endAngleRadians = self.startAngleRadians + (M_PI * 2); 
     self.lineWidth = 1.f; 
     self.tintColor = [UIColor defaultDwonloadButtonBlueColor]; 
    } 
    return self; 
} 

@implementation PKCircleView 

#pragma mark - initialization 

- (id)initWithCoder:(NSCoder *)decoder { 
    return CommonInit([super initWithCoder:decoder]); 
} 

- (instancetype)initWithFrame:(CGRect)frame { 
    return CommonInit([super initWithFrame:frame]); 
} 

похоже setTintColor от IB вызывается до инициализации ... методы ,

Смежные вопросы