15

iOS 7 デバイスでセグメント化されたコントロールを iOS 6 バージョンのコントロールとして表示することは可能ですか?

インターフェイスの再設計の準備ができておらず、新しいフラット コントロールは UI の残りの部分と調和していません。可能であれば、今のところ iOS 6 のスタイルを維持するのが間違いなく最善です。

明確にするために、iOS 6.1 Base SDK を使用してコンパイルしています。これが私の質問に対する「明白な」答えであることは承知していますが、うまくいきません。他のほとんどの UI 要素は、これを行うことで iOS 6 のスタイルで表示されますが、 と のようにUIAlertViewUIActionSheetはそうでUISegmentedControlはありません。ただし、 や とは異なり、UIAlertViewUIActionSheetシステムUISegmentedControls」アイテムのようには感じません。iOS 6 モードで表示できるはずです。

編集:最終的にこれに写真を含めると役立つと思いました(おそらく最初からこれを行うべきでした)。しかし、私が提供した答えは問題を解決しました。また、振り返ってみると、これは結局 iOS 6 スタイルのように見えますが、iOS 7 スタイルのように見えるほど間違って表示されているだけです。

ここに画像の説明を入力

4

9 に答える 9

5

私は今日この問題に遭遇しました。私が更新に取り組んでいるアプリはかなり古く、まだ xib ファイルを使用しているため、これがストーリーボードで機能するかどうかはわかりません。上で他の人が示唆したように、iOS 6.1 SDK を使用する必要がありますが、これだけでは十分ではありません。次の手順を実行した後、古いUISegmentedControl外観を取り戻すことができました。

  1. 問題のインターフェイス ビルダー ドキュメントを開きます
  2. ファイル インスペクターに移動します (最初のインスペクター タブ。ドキュメント アイコンがあります)。
  3. 「Interface Builder Document」セクションで、「Opens in」を Xcode 4.6 に変更します。

これはバグだと思いUISegmentedControlます。コードで作成されたインスタンスの回避策がなくても驚かないでしょう。segmentedControlStyleこれは、iOS 7 でのプロパティの廃止に多少関連していると推測しています ( https://developer.apple.com/library/ios/documentation/uikit/reference/UISegmentedControl_Class/DeprecationAppendix/AppendixADeprecatedAPI.html#//apple_refを参照)。 /occ/instp/UISegmentedControl/segmentedControlStyle )。

これが誰かを助けることを願っています。

于 2013-09-23T21:51:14.860 に答える
2

UISegmentedControl セグメントのいずれかで画像を使用する場合、iOS 7 で適切に設定するためのコードを追加する必要があります。そうしないと、それらはテンプレート画像として使用され、選択されたセグメントはセグメントの背景の切り抜きになります。

iOS 7 の UISegmentedControl は、特に指定がない限り、その画像をレンダリング モード UIImageRenderingModeAlwaysTemplate であると解釈します。以前の動作を実現するには、iOS 7 の各セグメントのイメージで -[UIImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] を使用する必要がありました。

于 2013-09-20T04:31:21.540 に答える
2

以前のバージョンの XCode から iPhoneOS6.1.sdk ファイルを保存し、それを同じパスで Xcode 5 に追加すると、6.1 SDK に対してアプリを構築できるため、7 で実行するとすべてが 6 のようになります。 iOS7 SDK は、可能であればすべてを iOS7 のように見せるように iOS に指示します。本質的には、iOS6 アプリがありますが、XCode 5 でビルドします。

于 2013-09-19T19:21:36.713 に答える
0

はい、自分でコントロールを作り直せば可能です。偽のセグメント化されたコントロールを作成して、見た目も機能も同じようにします。

于 2013-09-19T16:41:46.880 に答える
0

私のアプリでは、セグメント化されたコントロールを「バー」スタイルに設定しました。私のios7 iphone5(おっと、5,6,7)でios6スタイルでレンダリングされます。ただし、ビューの幅に関係なく、セグメント内のテキストは切り取られ、3 つのドット "..." が追加されます。そのため、ios7 での ios6 のセグメント化されたコントロールのレンダリングは本当にバグがあるようです。

于 2013-09-23T14:05:44.107 に答える
-1

出来ますか?あまり...

独自のカスタム セグメント コントロールを作成できます。

または、UIAppearanceプロキシを使用してセグメント化されたコントロールを画像でカスタマイズすることもできますが、iOS 6 のように見せるのはユーザーの責任です。

于 2013-09-19T16:28:37.017 に答える