ビュー自体のフレームを渡さずに、関数 (この場合は静的に構築されたライブラリ内) からビューに UIView を追加する方法はありますか。
Paypal のライブラリはこれを実現しており、実装はどうなるのだろうと思っていました。
ルートコントローラーを変更したくありません。現在のコントローラーにビューを追加したいだけです。
のスタイルで
[something addSubview:myNewView];
私もアクセスできないビューがある場所。
ビュー自体のフレームを渡さずに、関数 (この場合は静的に構築されたライブラリ内) からビューに UIView を追加する方法はありますか。
Paypal のライブラリはこれを実現しており、実装はどうなるのだろうと思っていました。
ルートコントローラーを変更したくありません。現在のコントローラーにビューを追加したいだけです。
のスタイルで
[something addSubview:myNewView];
私もアクセスできないビューがある場所。
はい。init
次の代わりに、単にデフォルトの方法を使用しますinitWithFrame:
。
MyView *mySubview = [[MyView alloc] init];
[otherView addSubview:mySubview];
これにより、原点 (0/0) のフレームが mySubview のサイズがゼロになり、非表示になることに注意してください。後でフレームを指定するか、MyView で init メソッドをオーバーライドしてデフォルト フレームを に渡すことができます[super initWithFrame:defaultFrame]
。
DrummberBの答えは正しいですが、フレームなしで初期化されたビューはデフォルトでCGRectZeroのフレームになっているため、ビューはどこにも表示されません。遅かれ早かれ、ビューにフレームを割り当てる必要があります。