デモ
悪くない。面白いのはボタンとしても動作するところ。これは地味に便利。
各種イベントのハンドラはブロックで設定する。
@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の場合は今後コントロール系を実装する際の標準になりそう。
昔書いた記事


