2014年5月31日土曜日

クールなボタン機能付き円形プログレスバー



デモ
悪くない。面白いのはボタンとしても動作するところ。これは地味に便利。

各種イベントのハンドラはブロックで設定する。
@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の場合は今後コントロール系を実装する際の標準になりそう。


UIAppearanceの記載あり



昔書いた記事


0 件のコメント:

コメントを投稿