iOS7 edgesForExtendedLayout

2335 ワード

http://blog.csdn.net/cny901111/article/details/26529949
今日はUISEarchBar、UISEarchDisplayControllerで質問がありましたが、検索バーをクリックすると影の部分の位置がずれてしまいました
次の図を示します.
iOS7 edgesForExtendedLayout
いつもおかしいと思って、後ろに単独でdemoを作って、同じコードをコピーして正常に表示されていることを発見しました.
次に、コードを1つずつ表示すると、次のように表示されます.
 
- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    if (OSVersionIsAtLeastiOS7()) {

        if ([self respondsToSelector:@selector(edgesForExtendedLayout)])

        {

            self.edgesForExtendedLayout = UIRectEdgeNone;

        }

    }

}

不審な点を発見し、GoogleのiOS 7チュートリアル:iOS 6とiOS 7を同時にサポート、答えを見つけた.
 
理由:
 
iOS 7では、アップルが[UIViewController setEdgesForExtendedLayout:]という新しい属性を導入し、デフォルト値はUIRectEdgeAllです.コンテナがnavigation controllerの場合、デフォルトのレイアウトはnavigation barの上部から始まります.これは、すべてのUI要素が44 pt上にドリフトしている理由です.
この問題を修正する迅速な方法は、方法- (void)viewDidLoadに次のコードを追加することです.
1

self.edgesForExtendedLayout = UIRectEdgeNone;


これで問題は修復された.
 
 
参考資料:
http://blog.csdn.net/kmyhy/article/details/20444611
iOSの7:ステータスバーに表示されるUItableView:http://www.sqleye.com/index.php?m=content&c=index&a=show&catid=31&id=25363