被导航控制器包装的控制器的View的y值问题

最近一直在纠结问题,为什么有时候被导航控制器包装的控制器的View的y值有时候是64,有时候是0,觉得很奇怪,于是研究了一下,发现有个属性可以改变View的y值,那就是translucent(属于导航栏的)这个属性可以设置y值,这个属性的作用是用来设置导航栏是否半透明,默认值为Yes(半透明效果),为NO则不透明,下图展示了一下Yes和No的区别:

要想禁用translucent属性,可以在Storyboard中选中导航栏,然后在Attribute Inspectors中,取消translucent的勾选,或者直接导航栏的这个属性为NO。当translucent为NO是,当前导航控制器所包装的控制器的View的y值为64,反之为0,有些人会觉得奇怪,我没设置translucent=NO,只是用一个图片作为它的背景,然后View的y值就变成了64,

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];

其实是你设置了图片之后,系统自动帮你把translucent那个属性的值设置成了NO,所以那个控制器的y值变成了64.

时间: 2024-11-01 21:31:17

被导航控制器包装的控制器的View的y值问题的相关文章

02---按钮的设置 控制器拥有导航栏包装一层导航控制器 添加子控制器 UIBarButtonItem导航按钮 设置导航栏UINavigationBar主题 设置状态栏样式

一.按钮的设置 1.设置背景图片 [btn setBackgroundImage:image forState:UIControlStateNormal]; 2.内部UIImageView 1> 设置内部UIImageView的图片 [btn setImage:image forState:UIControlStateNormal]; // 不能写成btn.imageView.image = image; 2> 调整内部图片的内容模式 self.imageView.contentMode =

图片拉伸方法以及修改图片渲染模式以及如何把一个控制器包装成一个导航控制器

当我们给导航控制器的左侧或右侧的item设置图片的时候,设置完成后无论图片是什么颜色,将图片添加到item上的时候会被系统渲染成蓝色,这个时候如果我们想要使用图片本来的颜色,那么就可以用到下面这个方法: 下面这个方法就是对图片进行拉伸: - (void)viewDidLoad { [super viewDidLoad]; UIImage *NormalImg = [UIImage imageNamed:@"RedButton"]; UIImage *HightImg = [UIImag

[BS-20] 导航控制器和视图控制器在添加控制器的区别

导航控制器和视图控制器在添加控制器的区别 1. 因导航控制器拥有导航栈,有一个普通视图控制器都没有的数组viewControllers,加入该数组中的视图控制器默认以push的方式进入导航栈.导航控制器有个[UINavigationController alloc] initWithRootViewController:rootVC]; 的初始化方法,调用该方法相当于把rootVC加入数组viewControllers的第一个位置,作为栈底部的rootVC是不会被pop出去的,与导航控制器共生死

导航控制器的根控制器 是滚动性&普通的frame区别

当一个控制器有navigationBar&tabBar: 1.当导航控制器根控制器是tableViewController时,tableView 的frame原点是屏幕左上角,当向tableView上添加子控件到(0,0)点时,会添加到导航条左下角,即会有64的差距,这是由于可扩展区域引起的,本质是tableView继承scrollView,有contentSize的原因,总之使用有滚动特性的控件时,注意此因素影响,动态观察tableView的层次结构会发现有一层scrollView--->

UISegmentedControl的使用、同一个控制器中实现多个View的切换、addChildViewController等方法的使用

本文先讲解简单的分段控制器UISegmentedControl的使用,然后具体讲解它最常使用的场景:同一个控制器中实现多个View的切换. 文章构思: 1.先直接讲解一张UI效果图的三种实现方式. 2.对UISegmentedControl类的各种属性和各种方法的讲解. UISegmentedControl控件的很大的使用场景基本像下面这张图显示的一样,在同一个控制器中实现多个View的切换. 结合这张图,我先讲解下产品的要求.导航栏上面放置一个UISegmentedControl控件,可以切换

导航控制器和标签栏控制器

1. 导航控制器 1.1. 导航控制器的组成 1.2. 导航控制器的创建 1.3. 改变导航控制的关联视图 1.4. 实现导航 1.5. 添加标题 1.6. 设置导航栏颜色 1> 使用setBackgroudColor属性设置 2> 使用tintColor属性进行设置 1.7. 添加左右按钮 1> 静态添加按钮 2> 动态添加按钮 1.8. 设置返回按钮 2. 标签栏控制器 2.1. 标签栏控制器的创建 1> 静态创建标签栏视图控制器 2> 创建一个Tabbed App

导航栏控制器和标签栏控制器(UINavigationController和UITabBarController)混用

很多时候,在UI设计方面同时需要使用导航控制器和标签栏控制器,这时,需要掌握如何设计结合使用这两种不同控制器.比如手机QQ,程序有三个标签栏(分别为消息.联系人.动态),同时在选择某个联系人或者会话时,会进入聊天的子页面,因此这里同时使用到了标签栏控制器和导航控制器. 我目前所知道有以下方法可实现上述的结合使用效果. 根视图是标签栏控制器,然后每页标签栏又有一个根视图控制器为导航栏控制器的标签,如下代码所示 // 消息 MessageViewController* msg = [[Message

007-多控制器管理及其控制器间的数据传递

掌握 • 1.控制器以及view的多种创建方式 • 2.UINavigationController的简单使用:添加\移除子控制器 • 3.UINavigationBar内容的设置 • 4.Segue之数据传递 • 1.控制器以及view的多种创建方式 问题一:如何创建一个控制器? •控制器常见的创建方式有以下几种 1>通过storyboard创建控制器 •先加载storyboard文件(Test是storyboard的文件名) UIStoryboard *storyboard = [UISto

007-多控制器管理(控制器间的数据传递)

掌握 • 1.控制器以及view的多种创建方式 • 2.UINavigationController的简单使用:添加\移除子控制器 • 3.UINavigationBar内容的设置 • 4.Segue之数据传递 • 1.控制器以及view的多种创建方式 问题一:如何创建一个控制器? •控制器常见的创建方式有以下几种 1>通过storyboard创建控制器 •先加载storyboard文件(Test是storyboard的文件名) UIStoryboard *storyboard = [UISto