web-dev-qa-db-ja.com

UIPopoverControllerをカスタマイズ/スタイル設定する方法

私はiPadアプリケーションで作業しており、UIPopoverControllersを使用しています。私はアプリのブランド化とスタイル設定が必要な部分にいますが、UIPopoverControllerの色/色合いを変更する方法を知りたいですか?標準は濃い青ですが、別の色である必要があります。

これは可能ですか?

あいさつ、トーマス

33
Thomas Joos

これは、possibleであり、抽象クラスをサブクラス化することでiOS 5.0から始まります- UIPopoverBackgroundView およびサブクラスを popoverBackgroundViewClass インスタンスの UIPopoverController インスタンスに割り当てます。残念ながら、ポップオーバーは動的なサイズ変更中にスムーズなアニメーションを実現するために矢印と境界線に画像を使用する必要があるため、tintColorプロパティはありません。 IPopoverBackgroundViewクラスリファレンス でUIPopoverControllerの外観をカスタマイズする方法の詳細を学ぶことができます。

51
Andrew

今のところ不可能です。

それは私が「Box in a Box」モデルと呼んでいるものです。ボックス内のボックス(UIViewController内のUIPopoverController)を制御できますが、実際のポップオーバー自体の制御は非常に限られています。矢印の方向とサイズ以外では、他のことはほとんど変更できません。モーダルエフェクトポップオーバーのオプションもあります。これは、表示されたときに他のすべてを暗くしますが、私はそれを機能させようとしませんでした。

UIPopoverクラスがもうないことに気づいたと思います。

聞きたい答え:
本当に悪いスタイルを作りたい場合は、自分で書いてください。それほど難しくありません。

クリックしたいリンク:
Cocoacontrols は、GitHubで利用可能なiOSおよびOSXコンポーネントのインデックスです。 ポップオーバー機能があります。

21
Sneakyness

iOS 7では、backgroundColorUIPopoverControllerプロパティが導入されます。これは、ナビゲーションの背景色とポップオーバーの矢印に影響を与える/含みます。

@property (nonatomic, copy) UIColor *backgroundColor NS_AVAILABLE_IOS(7_0);

使用例:

    if ([self.popoverVC respondsToSelector:@selector(setBackgroundColor:)]) {   // Check to avoid app crash prior to iOS 7
        self.popoverVC.backgroundColor = [UIColor greenColor];   // [UIColor colorWithPatternImage:@"..."] doesn't reflect the color on simulator but on device it works!
    }

-現在(iOS 7.0.3)、場合によっては(colorWithPatternImage:を使用して色を設定するなど)、シミュレーター(および一部のデバイスでさえ)は色を尊重しません。

13
Ashok

ここに私の帽子を投げます。

IOS 5以降のUIPopoverBackgroundViewsを活用して、tintColorsに単純なUIPopoverControllerプロパティを追加しました。

PCPopoverControllerhttps://github.com/pcperini/PCPopoverController

8
Patrick Perini

uIPopoverBackgroundViewを活用したこれらの最新プロジェクトをご覧ください https://github.com/CRedit360/C360PopoverBackgroundViewhttps://github.com/GiK/GIKPopoverBackgroundView

0
johndpope

iOS 5以降では実行できます。ここにライブラリがあります

https://github.com/ddebin/DDPopoverBackgroundView

ドキュメントを見て、それは非常に簡単です

幸運を

0
Kshitiz Ghimire

ポップオーバー内のView Controllerをカスタマイズし、次のコードを使用してポップオーバーの境界線を非表示にすることで、それをだまそうとします:

UIView * border = [[insideViewController.view.superview.superview.superview subviews] objectAtIndex:0];  
border.hidden = YES;

このアプリは実際にはまだ開発中なので、他の人がこのソリューションについてコメントすることを期待しています。

0
vangoz