私はiPadアプリケーションで作業しており、UIPopoverControllersを使用しています。私はアプリのブランド化とスタイル設定が必要な部分にいますが、UIPopoverControllerの色/色合いを変更する方法を知りたいですか?標準は濃い青ですが、別の色である必要があります。
これは可能ですか?
あいさつ、トーマス
これは、possibleであり、抽象クラスをサブクラス化することでiOS 5.0から始まります- UIPopoverBackgroundView
およびサブクラスを popoverBackgroundViewClass
インスタンスの UIPopoverController
インスタンスに割り当てます。残念ながら、ポップオーバーは動的なサイズ変更中にスムーズなアニメーションを実現するために矢印と境界線に画像を使用する必要があるため、tintColor
プロパティはありません。 IPopoverBackgroundViewクラスリファレンス でUIPopoverControllerの外観をカスタマイズする方法の詳細を学ぶことができます。
今のところ不可能です。
それは私が「Box in a Box」モデルと呼んでいるものです。ボックス内のボックス(UIViewController
内のUIPopoverController
)を制御できますが、実際のポップオーバー自体の制御は非常に限られています。矢印の方向とサイズ以外では、他のことはほとんど変更できません。モーダルエフェクトポップオーバーのオプションもあります。これは、表示されたときに他のすべてを暗くしますが、私はそれを機能させようとしませんでした。
UIPopover
クラスがもうないことに気づいたと思います。
聞きたい答え:
本当に悪いスタイルを作りたい場合は、自分で書いてください。それほど難しくありません。
クリックしたいリンク:
Cocoacontrols は、GitHubで利用可能なiOSおよびOSXコンポーネントのインデックスです。 ポップオーバー機能があります。
iOS 7では、backgroundColor
のUIPopoverController
プロパティが導入されます。これは、ナビゲーションの背景色とポップオーバーの矢印に影響を与える/含みます。
@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:を使用して色を設定するなど)、シミュレーター(および一部のデバイスでさえ)は色を尊重しません。
ここに私の帽子を投げます。
IOS 5以降のUIPopoverBackgroundView
sを活用して、tintColor
sに単純なUIPopoverController
プロパティを追加しました。
PCPopoverController
: https://github.com/pcperini/PCPopoverController
uIPopoverBackgroundViewを活用したこれらの最新プロジェクトをご覧ください https://github.com/CRedit360/C360PopoverBackgroundViewhttps://github.com/GiK/GIKPopoverBackgroundView
iOS 5以降では実行できます。ここにライブラリがあります
https://github.com/ddebin/DDPopoverBackgroundView
ドキュメントを見て、それは非常に簡単です
幸運を
ポップオーバー内のView Controllerをカスタマイズし、次のコードを使用してポップオーバーの境界線を非表示にすることで、それをだまそうとします:
UIView * border = [[insideViewController.view.superview.superview.superview subviews] objectAtIndex:0];
border.hidden = YES;
このアプリは実際にはまだ開発中なので、他の人がこのソリューションについてコメントすることを期待しています。