Starting in iOS7, the view controllers use full-screen layout by default. At the same time, you have more control over how it lays out its views, and that's done with those properties:
edgesForExtendedLayout
Basically, with this property you set which sides of your view can be extended to cover the whole screen. Imagine that you push a UIViewController into a UINavigationController, when the view of that view controller is laid out, it will start where the navigation bar ends, but this property will set which sides of the view (top, left, bottom, right) can be extended to fill the whole screen.
ViewController *vc = [[ViewController alloc] init];
vc.view.background = [UIColor purpleColor];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
Here you are not setting the value of edgesForExtendedLayout, therefore the default value is taken (UIRectEdgeAll), so the view extends its layout to fill the whole screen.

As you can see, the red background extends behind the navigation bar and the status bar.
Now, you are going to set that value to UIRectEdgeNone, so you are telling the view controller to not extend the view to cover the screen:

总结来说:
edgesForExtendedLayout
第一:
决定控制器的View的位置是在navigationBar的下边开始还是从手机屏幕( the screen)开始。
第二:
如何理解:
ViewController *vc = [[ViewController alloc] init];
vc.view.background = [UIColor purpleColor];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
这个时候,可以看到,存在navigationBar,并且navigationBar是透明的,默认值为UIRectEdgeAll。
这个时候,,需要注意的是ViewController的View的位置,设置为UIRectEdgeAll,ViewController的View铺满了整个屏幕,而设置为UIRectEdgeNone,需要注意的ViewController的View并未铺满屏幕,起始位置是从navigationBar的下方开始。
http://www.cnblogs.com/wangxiaofeinin/p/3532831.html?utm_source=tuicool&utm_medium=referral