1

UIPopoverBackgroundView のサブクラスである CustomPopOverBackgroundView を実装しました。

クラスメソッドを実装しました

+(UIEdgeInsets)contentViewInsets{   
    return UIEdgeInsetsMake(CONTENT_INSET, CONTENT_INSET, CONTENT_INSET, CONTENT_INSET);
}

現時点では CONTENT_INSET は固定値です:

#define CONTENT_INSET 25.0

私がやりたいことは、この値を変更できるようにすることです。これにより、アプリ全体で異なるコンテンツ インセットを持つ異なるポップオーバーを作成できます。

popoverbackground クラスを 1 つだけ持つことは可能ですか?

どうもありがとう。

4

1 に答える 1

1

それを行うための完璧な方法があるとは思いませんし、Apple の API がバックグラウンド クラスのインスタンスを独自に作成することを許可していないのは不自由だと思います。

ただし、少し退屈な回避策は、setContentViewInsets:(UIEdgeInsets)insets のような静的メソッドを作成して、+(UIEdgeInsets)contentViewInsets メソッドによって返される contentViewInsets などの静的変数の値を変更することです。

したがって、contentViewInsets を変更する必要があるたびに、「setContentViewInsets」を呼び出す必要があります。ちょっと面倒ですが、バックグラウンド クラスを大量に作成せずに考えられる「最良の」方法です。

ちなみに、実行時に contentViewInsets を変更すると、アニメーションの副作用が発生します。これは、私にとっては厄介なことでもあります。

Apple が API を変更して、バックグラウンド クラス自体の代わりにインスタンスを取得できることを切に願っています。

于 2013-02-14T21:17:16.000 に答える