デモ
悪くない。面白いのはボタンとしても動作するところ。これは地味に便利。
各種イベントのハンドラはブロックで設定する。
@property (nonatomic, copy) void (^fillChangedBlock)(UAProgressView *progressView, BOOL filled, BOOL animated); @property (nonatomic, copy) void (^didSelectBlock)(UAProgressView *progressView); @property (nonatomic, copy) void (^progressChangedBlock)(UAProgressView *progressView, float progress);
色は UIView の tintColor で制御する。そのために tintColorDidChangeがオーバーライドされている。
- (void)tintColorDidChange { [super tintColorDidChange]; UIColor *tintColor = self.tintColor; self.progressView.shapeLayer.strokeColor = tintColor.CGColor; self.progressView.shapeLayer.borderColor = tintColor.CGColor; }
描画で使う主要なパラメータは UI_APPEARANCE_SELECTOR 指定があって UIAppearance での一括指定に対応している。
@property (nonatomic, assign) BOOL fillOnTouch UI_APPEARANCE_SELECTOR; @property (nonatomic, assign) CGFloat borderWidth UI_APPEARANCE_SELECTOR; @property (nonatomic, assign) CGFloat lineWidth UI_APPEARANCE_SELECTOR; :
tintColor対応と UI_APPEARANCE_SELECTOR指定は、特にフラットデザインのiOS7の場合は今後コントロール系を実装する際の標準になりそう。
昔書いた記事