I love iPhone, Android, Cocos2d-x
[iPhone] UIPickerView でオドメータを作ってみた
「[iPhone] UIPickerView でエンドレスなロールを作る」というエントリで紹介した下記サイトのソースを参考にオドメータ(距離計)のようなものを作ってみた。
Pauldy’s House of Geek ? Blog Archive ? The Abusive PickerView
今回は1秒毎にカウントアップするようにしてみました。
何に使えるかよく分かりませんが、前回のエントリを書いた時にオドメータが思い浮かんだので作ってみました。
下のソースでは myPickerView.userInteractionEnabled = NO; としてユーザが Picker を操作できないようにしていますが、弄れるようにしてもそれはそれで面白いかも。
変更した部分のソース
@interface UIPickerViewUAppDelegate : NSObject{ IBOutlet UIWindow *window; IBOutlet UIPickerViewUViewController *viewController; UIPickerView *myPickerView; int odd; } @property (nonatomic, retain) UIWindow *window; @property (nonatomic, retain) UIPickerViewUViewController *viewController; @property (nonatomic, retain) UIPickerView *myPickerView; - (void) incrementOdd:(NSTimer*)timer; @end @implementation UIPickerViewUAppDelegate - (void)applicationDidFinishLaunching:(UIApplication *)application { myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 20, 300, 120)]; myPickerView.userInteractionEnabled = NO; myPickerView.delegate = self; [window addSubview:viewController.view]; [window addSubview:myPickerView]; [window makeKeyAndVisible]; odd = 0; [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(incrementOdd:) userInfo:nil repeats:YES ]; } - (void) incrementOdd:(NSTimer*)timer { odd++; NSUInteger max = 16384; NSUInteger base10 = (max/2)-(max/2)%10; int meter = odd; for (int i=4; i>=0; i--) { int currentPicker = [myPickerView selectedRowInComponent:i]; int prevNumber = currentPicker-base10; int nextNumber = meter%10; if (prevNumber!=nextNumber) { [myPickerView selectRow:++currentPicker inComponent:i animated:YES]; if (nextNumber==0) { [myPickerView selectRow:meter%10+base10 inComponent:i animated:NO]; } } meter /= 10; } } -(void)pickerViewLoaded: (id)blah { NSUInteger max = 16384; NSUInteger base10 = (max/2)-(max/2)%10; for (int i=0; i<5; i++) { [myPickerView selectRow:[myPickerView selectedRowInComponent:0]%10+base10 inComponent:i animated:NO]; } } - (NSUInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 5; }
関連する投稿
コメントをどうぞ
Additional comments powered by BackType