私は iPad アプリケーションに取り組んでおり、UIPopoverControllers を使用しています。私は、アプリをブランド化してスタイルを設定する必要がある部分にいます.UIPopoverControllerの色/色合いを変更する方法を知りたいですか? 標準は紺色ですが、別の色が必要です..
これは可能ですか?
よろしく、トーマス
私は iPad アプリケーションに取り組んでおり、UIPopoverControllers を使用しています。私は、アプリをブランド化してスタイルを設定する必要がある部分にいます.UIPopoverControllerの色/色合いを変更する方法を知りたいですか? 標準は紺色ですが、別の色が必要です..
これは可能ですか?
よろしく、トーマス
これは、抽象クラスをサブクラス化し、サブクラスをインスタンスのプロパティに割り当てることにより、 iOS 5.0 以降で可能になります。残念ながら、動的なサイズ変更中にスムーズなアニメーションを実現するために、ポップオーバーは矢印と境界線に画像を使用する必要があるため、プロパティはありません。UIPopoverBackgroundView Class Referenceで UIPopoverController の外観をカスタマイズする方法について詳しく知ることができます。UIPopoverBackgroundView
popoverBackgroundViewClass
UIPopoverController
tintColor
今のところ不可能です。
それは私が「ボックス内のボックス」モデルと呼んでいるものです。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 を使用して色を設定するなど)、シミュレーター (および一部のデバイスでさえ) は色を尊重しません。
ここに私の帽子を投げます。
UIPopoverBackgroundView
iOS 5以降でsを利用して、 sに単純なtintColor
プロパティを追加しましたUIPopoverController
。
PCPopoverController
:https ://github.com/pcperini/PCPopoverController
ポップオーバー内のViewControllerをカスタマイズし、次のコードを使用してポップオーバーの境界線を非表示にすることで、それをだまそうとします。
UIView * border = [[insideViewController.view.superview.superview.superview subviews] objectAtIndex:0];
border.hidden = YES;
アプリは実際にはまだ開発中なので、他の人がこのソリューションについてコメントしてくれることを期待しています。
UIPopoverBackgroundView を活用したこれらの最新プロジェクトをチェックして ください https://github.com/CRedit360/C360PopoverBackgroundView https://github.com/GiK/GIKPopoverBackgroundView
ios 5以降からできます、ここにライブラリがあります
https://github.com/ddebin/DDPopoverBackgroundView
ドキュメントを見るだけで、とても簡単です
幸運を
私はこれがお粗末な構築された答えであることを知っています、しかし私はちょうどUIPopoverControllerの見解で遊んでいます。それらは存在します。
それらにアクセスする唯一の方法は、UIPopovercontrollerに座っているビューからです。
私はナビゲーションコントローラーを持っているので、この階層に従います
UIView *test = ((UIView *)[[[self.navigationController.view.superview.superview.subviews objectAtIndex:0] subviews] objectAtIndex:1]);
UIView *test2 = ((UIView *)[[[self.navigationController.view.superview.superview.subviews objectAtIndex:0] subviews] objectAtIndex:1]);
test.backgroundColor = [UIColor greenColor];
test2.backgroundColor = [UIColor greenColor];
これは正確には最終目標ではありませんが、本当に近いです。
the_view_in_the_popover.superview.superview
(ナビゲーションコントローラービューから手を差し伸べていない場合は、たぶん1つのスーパービューだけ)がUIPopoverViewであることがわかります。UIViewとしてキャストし、UIViewとして扱う場合、実際にはルールに違反していません。でもそれは本当にアップル次第だと思います。
UIPopoverController の境界線を削除します。
NSArray* subviews = ((UIView*)[popupController.contentViewController.view.superview.superview.superview.subviews objectAtIndex:0]).subviews;
for(UIView *subview in subviews){
[subview removeFromSuperview];
}