3

UIPopoverPresentationControllerソースを指すために使用する矢印の色を変更したい。これを行う唯一の方法は、ポップオーバーの境界線と矢印を自分でサブクラス化UIPopoverBackgroundViewし、記述して描画することです。drawRectすべての角を丸くするなど、デフォルトのポップオーバーには細かい点がほとんどないため、これは面倒です。そして、プラットフォーム上でできる限りくつろげるようにしたいと思っています。

矢印の色を変更するためだけに、独自のポップオーバー矢印を描画する必要がありますか?

更新:の を設定しようとしましたbackgroundColorUIPopoverPresentationController、矢印が描画されるすべての場所の色が変わるようです。以前に機能するのを見たことがありますが、機能するときに何が機能するのかを突き止めることはできません。色を赤に設定するスクリーンショットを参照してください。青は、ポップオーバー内のナビゲーション コントローラーのコンテンツです。ボタンを指しているはずです。

ポップオーバーの背景色の問題

4

1 に答える 1

10

のプロパティがそれを処理する必要がありUIPopoverPresentationControllerますbackgroundColor

アップデート

私はこのアプローチを何度も使用しましたが、スクリーンショットにあるものを見たことはありません。popoverPresentationController.backgroundColorビューまたはコンテナーで別の背景色を使用していて、設定していませんか? 以下は、中央にないポップオーバー矢印のスクリーンショットです。ビュー コントローラーの背景は緑、popoverPresentationController.backgroundColor は赤です。値を設定するコードの横に表示されます。

ポップオーバー プレゼンテーション コントローラの中央以外の矢印

アップデート #2

あなたが投稿したプロジェクトを見て、問題を見つけました (なぜそれが問題なのか完全にはわかりませんが)。で表示されたView Controller内でポップオーバープレゼンテーションコントローラーのbackgroundColorプロパティを設定していますviewWillAppear:プレゼンテーションが行われた後にこのように背景色を設定すると、iOS 10 より前のバグが発生する可能性があると思われます。

ポップオーバー プレゼンテーション コントローラーbackgroundColorを、表示側のビュー コントローラーのメソッド内に設定し、ここでおよびプロパティonPopover:も設定すると (実際に を呼び出す前に)、すべてが正しく機能します。sourceViewsourceRectpresentViewController:

于 2016-08-29T23:51:52.233 に答える