iOS6和7坐标计算不一样的原因:
iOS6和7计算frame的坐标不一样的原因,比如iOS6依状态栏左上角为原点,iOS7是依导航栏的左下角为原点
原因是:
从iOS7开始控制多了一个属性edgesForExtendedLayout,这个属性是一个枚举,实际上本身iOS7的坐标也是从导航栏的左下角为原点,但是设置了edgesForExtendedLayout为向上扩展,所以扩展为导航栏的左上角为原点。edgesForExtendedLayout有四个方向,
UIRectEdgeNone = 0, //不扩展
UIRectEdgeTop = 1 << 0,//向上扩展到屏幕的边缘
UIRectEdgeLeft = 1 << 1,//向左扩展到屏幕的边缘
UIRectEdgeBottom = 1 << 2,//向下扩展到屏幕的边缘
UIRectEdgeRight = 1 << 3,//向右扩展到屏幕的边缘
UIRectEdgeAll = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight//四个方向都扩展
所以在做iOS6和7的适配的时候,需要显示位置一样,需要一个统一的坐标,所以iOS7设置为不扩展,可以解决适配问题
在storyboard中选择控制器也会有相应的选项,Extend edges。Under Top Bars(向上),Under Bottem Bars(向下)
“`