iOS 屏幕原点坐标

Posted 长沙火山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 屏幕原点坐标相关的知识,希望对你有一定的参考价值。

一、屏幕原点坐标的研究

我们给一个空间设置origin为(0,0)的时候,有时候这个点会再屏幕的最左上角(有导航栏的情况下还可能会被导航栏给盖住),有时候又在导航栏的下边,都是同样的原点坐标,那么为什么会出现这种情况呢?下面给出答案:

一个controller的view的原点位置受self.navigationController. navigationBar 的 setTranslucent (BOOL) 属性控制,在 ios7 以后 translucent 属性默认为 YES。

translucent 为YES:原点位置坐标为屏幕左顶端,即屏幕坐标系(0 , 0),含义为毛玻璃、半透明效果。

translucent 为NO:原点位置坐标为导航栏的下边的左顶端,即屏幕坐标系(0 , 64),此时导航栏不透明。

注意,当我们设置navigationBar的背景图片setBackgroundImage(注意是背景图片不是背景颜色)的时候,坐标起点也会变成(0,64),因为当我们设置背景图片的时候,系统会自动修改translucent为NO。

二、设置屏幕原点坐标从(0, 0)开始

- (void)viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];
    
    //translucent 为YES:原点位置坐标为屏幕左顶端,即屏幕坐标系(0 , 0),含义为毛玻璃、半透明效果。
    self.navigationController.navigationBar.translucent = YES;


- (void)viewWillDisappear:(BOOL)animated

    [super viewWillDisappear:animated];
    
    //translucent 为NO:原点位置坐标为导航栏的下边的左顶端,即屏幕坐标系(0 , 64),此时导航栏不透明。
    self.navigationController.navigationBar.translucent = NO;


以上是关于iOS 屏幕原点坐标的主要内容,如果未能解决你的问题,请参考以下文章

iOS 屏幕原点坐标

屏幕坐标系和世界坐标系

iOS下bound,center和frame

16.windows坐标系

iOS开发之仿射变换示例总结

核心图形坐标系