2012-01-06 11 views
5

UIStepperは非常に便利ですが、私はそれの外観を変更したい、私はプラスとマイナスではなく、コントロールの色を変更したいアイコンをカスタマイズする必要があります。どうすればこれを達成できますか?前もって感謝します!UIStepperの外観を変更する

+0

これはできません。この機能をリクエストするバグを提出してください:https://bugreport.apple.com –

答えて

2

これは現在できません。アイコンをカスタマイズする場合は、カスタムUIControlオブジェクトを記述する必要があります。

UIStepper Class Referenceから、だけが変更できるパラメータはあなたがアイコンをカスタマイズすることはできません

continuous property 
    autorepeat property 
    wraps property 
    minimumValue property 
    maximumValue property 
    stepValue property 

    value property 

です。

ただし、UIViewのサブクラスであるため、backgroundColorを変更してみることができます。

+0

'backgroundColor'の変更は、' UIStepper'がどのように実装されたかの決定により機能しません。質問者はバグファイルを提出する必要があります:https://bugreport.apple.com –

+0

私はそれがとにかくオープンソースの代替手段を吸うことがわかりますか?途中で答えをくれてありがとう。 –

5

これは動作します:

[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal]; 
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"highlighted.png"] forState:UIControlStateHighlighted]; 
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled]; 

それはしかしどのように将来の証拠わかりません。

+0

ニースが見つかりました。左と右のコントロールに異なる画像を設定する方法はありますか? – tagyro

+0

@AndreiStoleru私はあなたがios5をターゲットにしていると仮定し+インクリメントとデクリメント画像を意味します。 UIStepperにサブクラス化またはカテゴリを追加することなくしかし、あなたは[[UIImageView appearanceWhenContainedIn:[UIStepper class]、nil] setImage:[UIImage imageNamed:@ "divider.png"]]を使って仕切りをカスタマイズすることができます。 – Timmehmainframe

+0

iOS 9では 'appearanceWhenContainedIn'が廃止されました。将来のユーザーがここに到着した場合には、今後の使用を推奨しません。 – hvaughan3

13

iOS 6.0以降では、- (UIImage *)decrementImageForState:(UIControlState)state- (UIImage *)incrementImageForState:(UIControlState)stateを使用して、UIStepperコントロールのラベルを変更できます。

これは、iOS 6.0のために働く:

[_stepper setDecrementImage:[UIImage imageNamed:@"decrementIcon.png"] forState:UIControlStateNormal];

+1

正常に動作します。これは、iOS> = 6の場合に受け入れられる回答でなければなりません。 –

0

あなたはいつもあまりにも、UIViewsをステップと推測することができます。とにかく、これは私のコードですが、質問に直接答えませんが、まあまあです。

@implementation UIStepper (Util) 

- (void) fixForIos7 { 
    if (!IS_IOS7) 
     return; 
    for (UIView *view in self.subviews) { 
     view.backgroundColor = [UIColor whiteColor]; 
     UIButton *button = (UIButton*)view; 
     [button setTintColor:[UIColor blackColor]]; 
    } 
} 

@end 
2

ここは私のために働く解決法です。

プラットフォームIOSの7.1

[stepper setBackgroundImage:[UIImage new] forState:UIControlStateNormal]; 
[stepper setDividerImage:[UIImage new] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal]; 

結果だけインクリメントされ、デクリメント画像が表示されています。