iOS7 で UIProgressViewの仕様が変わって高さが変更になりました。ごまかしごまかし使っていましたが、結局、自分なりに使い勝手の良い物を作りました。
iOS7 の普及率が高いそうでiOS6との互換という理由はもう無いかもしれないし、 Objective-c にこなれた人ならすぐ作れる物かもしれませんが、公開しておきます。
こんな感じで使用できます。
ViewController.h
1 2 3 4 5 6 7 |
#import <UIKit/UIKit.h> #import "SAProgressBarView.h" @interface ViewController : UIViewController { SAProgressBarView* progressView; } @end |
ViewController.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
// // ViewController.m // progress // // Created by Shimpei Azuma on 2013/12/14. // Copyright (c) 2013年 Shimpei Azuma . All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //初期化 progressView = [[SAProgressBarView alloc] initWithFrame:CGRectMake(100, 100, 100, 10)]; //下地の色 [progressView backgroundColor:[UIColor lightGrayColor]]; //バーの色 [progressView fillColor:[UIColor greenColor]]; //ビューに登録 [self.view addSubview:progressView]; } - (void)viewDidAppear:(BOOL)animated { //[progressView setProgress:0.8f]; 表示だけならこのコメントを外すだけで可能 //ゲージが増えるアニメーションをしたい場合はこんな記述 [progressView risingAnimationWithDuration:10.0f startProgress:0.3f endProgress:0.6f loops:3 maxDelegate:self maxSelector:@selector(maxHandler) completeDelegate:self completeSelector:@selector(completeHandler) ]; } - (void)maxHandler { //ゲージがいっぱいになったときのイベント [progressView fillColor:[UIColor redColor]]; } - (void)completeHandler { //ゲージの増加アニメーションが終わったときのイベント [progressView fillColor:[UIColor purpleColor]]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end |
恥ずかしながら、Githubへのアップの仕方がわかりません。なので、zipファイルの配布でごめんない。Zipファイルにはサンプルの .xcodeproj が入っています。SAProgressというグループ以下がライブラリとなっています。
著作権は保持していますが、私用、商用、改変、含めてご自由にお使いください。おきまりの文句ですが、本プログラム等に瑕疵があった場合でも、一切の責任はおわないものといたします。
使用したアプリなどはコメントに書いていただけるとうれしいです。
おわり
コメント