2013-04-29 11 views
17

プロジェクトでカスタムスイッチを実装する必要があります。現在私が見いだしたことは、下の図のように実装するためにUISwitchで変更することができないことです。私は記事を追跡し、stackoverflowや他のブログでグーグルを試みたが、解決策が見つからなかった。 1つの方法は、thisポストのようなUISegmentedコントロールを使うことですが、それも私の問題を解決しません。有効と無効 - それはあなたのように見える任意のヘルプ画像付きのカスタムUISwitch

+0

UISegmentedControlの問題点は何ですか?私はそれがあなたがやろうとしていることのために行く方法だと思う。 – Odrakir

+3

これを試してください:https://github.com/twotoasters/TTSwitch – Desdenova

+0

あなたの回答はここにあります:[SwiftySwitch](https://github.com/Sethmr/SwiftySwitch) – Sethmr

答えて

21

独自のスイッチを作成するのはなぜ難しいですか? UISwitchはコントロールであり、本質的には2つの状態でメッセージを送信するビューです。左画像角丸(ビューの層のcornerRadiusを設定)し、背景色でシンプルなビュー

  • を:表示する画像ビューコンテナビュー

    • を:あなたはこのようにそれを設定することができ左側に表示したい画像、つまりあなたの例のチェックマーク

    • 右の画像:右側に表示したい画像、つまりあなたの例のXマークを表示する画像ビュー

    • スライダ:スイッチのスライダ部を示すイメージ図であり、他の二つの画像ビュー上に設定

    ユーザタップ又は制御をスワイプする場合、の反対側にスライダーを移動するコアアニメーションを使用スイッチの状態を更新し、新しい状態の背景色に素早くフェードアウトします。コントロールのアクションをターゲットに送信します。

  • +2

    ありがとうございました!私はあなたの答えから解決策を達成しました。 –

    +0

    それはまったく真実ではありません。あなたが切り替えるときにAppleが作った美しい効果は、それほど簡単ではありません。非線形の非線形アニメーションです。 – Curnelious

    +0

    はい、私はAppleがUISwitchを正しく見せるように努力してくれたことは知っていますが、上記の記述は無効ではありません。どのくらい多くの作業をトランジションアニメーションに入れるか決定するのはオペレーション次第ですが、Core Animationのツールでは、私が記述した内容を簡単に実装することができます。 – Caleb

    1

    を事前に

    enter image description here

    おかげで自分のコントロールのみ2の状態を持っていると思います。

    簡単な方法は、2つのpng画像を作成し、背景画像でカスタムUIButtonを使用し、ボタンをタップするたびにその2つの画像を置き換えることです。

    これはあなたがしようとしていることですか、何か誤解しましたか?

    [button setImage:[UIImage imageNamed:@"image_on"] forState:UIControlStateSelected]; 
    [button setImage:[UIImage imageNamed:@"image_off"] forState:UIControlStateNormal]; 
    

    をし、それがタップだときだけ選択したプロパティを切り替える:

    +0

    私は滑りが必要だったと思います。 – makaron

    +0

    私はしようとしていますTwitterのビデオ共有アプリ「Vine」で行われているように複製する。実際には、画像に表示されているヘッダーがそのアプリでスムーズにスライドします。状態を変更するボタンを追加しても、ヘッダのスムーズなスクロールはできません。あなたの応答を感謝します! –

    +0

    さて、あなたはいくつかの異なるアプローチが必要だろうと思います。どういたしまして。そのことを祈って、それを行う方法が見つかった場合はお知らせください: – gasparuff

    18

    gasparuffが言うように、あなたはそれだけで画像を設定し、UIButtonで何もすることができます。

    - (void) buttonTap { 
        button.selected = !button.selected; 
    } 
    

    画像を自動的に変更します。

    +3

    彼はどこで動くべきかを見ることができません。 – Odrakir

    1

    あなたは-[UISwitch setOnImage:]-[UISwitch setOffImage:]について知っていますか?また-[UISwitch setTintColor]。私が見ることができる唯一の欠点については、スイッチ自体が標準のiOSスイッチ(丸いボタン)になりますが、それ以外の場合、これは最もiOSのようなソリューションになります。

    独自のon/offImageを実装する場合は、サイズ制限を覚えておいてください。また、画像のスイッチ側が凹面であることを覚えておいてください。 tintColorは、残りのスイッチを自分の配色を反映させるために使用できます。 valueChangedイベントを追跡して、色合いの色を変更したい場合があります。

    あなたの質問に表示される正確な外観(四角いスイッチボタン)が必要な場合は、@ Calebが示唆しているように、おそらくカスタムコントロールを使用したいと考えています。

    +1

    これはiOS 6+ –

    +2

    のみです。 iOS6の採用率は92%(2013年6月)、登山率は92%です。 – Olie

    関連する問題