0

Interface Builderで UIView を作成しviewFromIB、ViewController の読み込み時に非表示にしました。別の UIView を作成しています。それを と呼びましょうmodalViewType。コードを使用して、それを のサブビューとして追加しますself.navigationController.view

UIView *modalViewType = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
modalViewType.opaque = NO;
modalViewType.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6f];
[self.navigationController.view addSubview:modalViewType];

今、私は非表示を解除し、サブビューとしてviewFromIB追加し、メソッドを使用して前面に表示しています。が、見えているのに見えなくなっている。コードは次のとおりです。viewFromIBmodalViewTypeviewFromIBbringSubviewToFront:viewFromIBmodalViewType

viewFromIB.hidden = NO;
viewFromIB.layer.masksToBounds = YES;
viewFromIB.center = CGPointMake(modalViewType.frame.size.width/2, modalViewType.frame.size.height/2);
[modalViewType addSubview:viewFromIB];
[modalViewType bringSubviewToFront:viewFromIB];  

参考までに、これは iOS6 では正常に機能していましたが、iOS7 では癇癪を起こしています。他の情報が必要な場合はお知らせください。どうもありがとう。

更新: modalViewTypeUIView を使用せずに再表示するviewFromIBと、bringSubviewToFront:正常にself.view動作します。のサブビューを追加しようとしている場合にのみ問題がありmodalViewTypeます。私のサブビューのフレームは完全に論理的です。

4

2 に答える 2

0

が Interface Builder からのものである場合、viewFromIBそれはすでにいくつかのスーパービューに追加されている可能性があります。addSubview:サブビューとして別のビューに既に追加されているビューに対して、の定義された動作がどのようなものかわかりません。

まずは電話してみるのもいいかもしれませんremoveFromSuperview

また、サイズを確認してくださいviewFromIB。iOS7 では、予期しない方法でサイズが変更されることが知られています。

于 2013-10-30T09:56:55.977 に答える