18

オンとオフのテキスト ラベルを「はい」と「いいえ」に変更する方法を知っている人はいますか。

でやった

            ((UILabel *)[[[[[[switchControl subviews] lastObject] subviews] objectAtIndex:2] subviews] objectAtIndex:0]).text = @"Yes";
        ((UILabel *)[[[[[[switchControl subviews] lastObject] subviews] objectAtIndex:2] subviews] objectAtIndex:1]).text = @"No";

ただし、iOS 4.2 のリリースにより、これはサポートされなくなりました (いずれにせよ、これはおそらく Apple によって推奨されていませんでした)。

私のクライアントは、はい/いいえの切り替えを主張しています。アドバイスをいただければ幸いです。

どうもありがとう

4

5 に答える 5

24

フラ!iOS 6から、オン/オフ状態にそれぞれ使用する画像を指定することができます。したがって、これを使用して、YES / NO画像(または以前に制限されていたON / OFFの代わりに使用したいテキストを表す画像)を表示できます。

 if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))
 {
     [mySwitch setOnImage: [UIImage imageNamed:@"UISwitch-Yes"]];
     [mySwitch setOffImage:[UIImage imageNamed:@"UISwitch-No"]];
 }

画像の幅は77ピクセル、高さは27ピクセルで、テキスト(状態ごとに1つの画像)はその77ピクセルの幅の水平方向の中央に配置する必要があります。私はテキストに透明な背景を使用しているので、背景に色合いを使用することができます。これは引き続きこれで機能します。

もちろん、テキストの画像を使用するよりも、テキストを提供する方が簡単に思えますが、少なくともこの新しいオプションには確かに感謝しています。

于 2012-11-16T01:46:36.043 に答える
20

そのためには、カスタム UISwitch を実装する必要があります。または、すでに実装されているものを使用してください:)(このSOの質問この投稿を確認してください)

于 2010-12-01T14:13:20.023 に答える
12

ウラジミールの答えは素晴らしいですが、私の謙虚な意見では、 https ://github.com/domesticcatsoftware/DCRoundSwitch にさらに優れた実装があります。

カスタム テキストを設定する以外に、UISwitch のサイズと色を変更する方が簡単で、よりシャープな結果が得られます。

MIT ライセンスの下でリリースされています。見てください!

于 2012-04-30T20:33:41.250 に答える
8

次の項目でカスタム UISwitch を作成できることがわかりました。

  • UIScrollView
  • UIButton
  • 2 つの UILabels
  • 背景画像
  • ブール値

#import <QuartzCore/QuartzCore.h>まず、QuartzCore.framework をプロジェクトとビュー コントローラーに追加する必要があります。

次に、Interface Builder を使用してビューに UIScrollView を追加します。ScrollView はカスタム UISwitch になります。次に、ボタンと 2 つのラベルを ScrollView に追加します。一方のラベルは「はい」用で、もう一方は「いいえ」用です。

ボタンに画像を追加し、そのタイプをカスタムに設定します。これは私が使用する画像です:ここに画像の説明を入力

画像の青と白の領域にラベルを配置します。ScrollView を調整して、画像の青い部分とつまみを表示するのに十分な大きさにします。

次の行を viewDidLoad に追加します。

self.mySwitch.layer.cornerRadius = 13.5;

mySwitch は ScrollView の名前で、13.5 は ScrollView の半分の高さです。上記のステートメントは、UISwitch のように両端が丸くなるように ScrollView を変更します。

カスタム スイッチをアクティブにするには、ボタンの "Touch Up Inside" イベントを IBAction に関連付ける必要があります。イベントハンドラーで使用するコードは次のとおりです。

-(IBAction)mySwitchButton:(id)sender {
    self.myValue = !self.myValue;
    CGPoint scrollPoint = CGPointMake((self.myValue)? 43.0: 0, 0.0);
    [mySwitch setContentOffset:scrollPoint animated:YES];
}

myValue はスイッチの状態を含むブール変数で、43.0 はスイッチをオフの位置に置くために画像を移動する必要があるポイントの数です。

それだけです!

于 2012-05-03T18:26:14.050 に答える
0

iOS 6 以降、UISwitch のオン/オフ状態に使用する画像を指定できますが、テキストは指定できません。これは、翻訳者がテキストだけでなく各言語のイメージ テキストを提供する必要があるため、国際化が必要な場合に問題を引き起こします。さらに、UISwitch 画像のサイズは固定されているため、テキストの長さが制限されます。

上記の理由から、私は JSWilson の答えが好きです: シンプルで柔軟です。

必要なコントロールを手動で追加する必要性から開発者を解放するために、私の GitHub リポジトリ ( https://github.com/corerd/CRDScrollSwitch)で見つけることができるカスタム CRDScrollSwitch クラスをコーディングしました。

于 2013-06-04T03:24:18.970 に答える