美文网首页
iOS 之 冷门小知识

iOS 之 冷门小知识

作者: 静持大师 | 来源:发表于2016-09-03 23:21 被阅读111次

生命周期

1、-(void)loadView

  • 苹果建议:在loadView方法中,只是创建子视图控件,不设置位置,在viewWillLayoutSubviews方法中设置控件的位置

  • loadView方法中,通常不要调用[super loadView]如果调用父类方法默认会创建一个空视图
    注:如果重写了loadview,控制器只会加载loadview里的东西,就不会加载xib storyboard

  • 什么时候被调用?

    1. 每次访问UIViewController的view(比如controller.view)而且view为nil,loadView方法就会被调用。
    2. 它会先去查找与UIViewController相关联的xib文件,通过加载xib文件来创建UIViewController的view
    3. 如果在初始化UIViewController指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件
    4. 如果没有明显地传xib文件名,就会加载跟UIViewController同名的xib文件
    5. 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性,大致如下
      self.view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease];
  • 怎样正确使用这个方法?

    • 如果想通过代码来创建UIViewController的view,就要重写loadView方法,并且不需要调用[super loadView],因为在第3点里面已经提到:若没有xib文件,[super loadView]默认会创建一个空白的UIView。我们既然要通过代码来自定义UIView,那么就没必要事先创建一个空白的UIView

2、+ (void)load

// 类一加载到内存时就会调用这个方法
+ (void)load {
}
+(void)initialize 和 + (void)load区别
  +(void)initialize: 类第一次被调用(或使用)的时候调用
  +(void)load: 类第一次装进内存的时候调用

load调用比initial时间更前



坐标转化

// 以c为坐标原点的b的fram,转换为在a中的frame
[a convertRect:b fromView:c];
// 以a为坐标原点的b的fram,转换为在c的fram
[a convertRect:b toView:c];

导航栏

  • (设置了UINavigationBar的translucent为NO) || (设置UINavigationBar的backgroundImage有alpha值的图片),则UINavigationBar的高斯控件会消失

  • UINavigationBar 的barTintColor属性

    • 高斯控件: 影响 高斯控件最后一个子控件的背景色
    • 高斯控件: 影响_UIBarBackground的背景色
  • UINavigationBar 的backgroundImage属性

    • 影响_UIBarBackground的子控件(UIImageView)的image属性
  • translucent属性(透明度)

    • iOS7 以后 translucent 默认为 YES,rootView 从(0,0)开始布局,修改edgesForExtendedLayout 属性可以改变布局;
    • translucent 为 NO,rootView 从导航栏底部开始布局,修改 edgesForExtendedLayout属性无法改变布局,可以通过设置 extendedLayoutIncludesOpaqueBars = YES 从(0,0)开始布局;
    • automaticallyAdjustsScrollViewInsets 默认值是 true,表示在全屏模式下会自动修改第一个添加到 rootView 的 scrollview 的 contentInset 为(64,0,0,0),用来纠正scrollview在全屏模式下的显示;
    • 设置 UINavigationBar 的背景图片可以改变导航栏背景色,如果背景图片包含 alpha 的色值,系统会默认将 translucent 设置为 true,没有包含 alpha 色值会将 translucent 设置为 false。但这是针对没有手动设置 translucent 值的情况,如果我们手动设置了 translucent,那么系统就不会根据背景图片的 alpha 来修改 translucent。

相关文章

  • iOS 之 冷门小知识

    生命周期 1、-(void)loadView 苹果建议:在loadView方法中,只是创建子视图控件,不设置位置,...

  • 两年iOS经验之你忽略的小知识点

    两年iOS经验之你忽略的小知识点 两年iOS经验之你忽略的小知识点

  • iOS冷门知识 -RightToLeft

    苹果官方文档在做国际化的时候你可能会碰到与我一样的问题,世界上有一群人使用习惯的方向与一般人是相反的(具体是怎么相...

  • javascript冷门小知识

    1、判断一个值是不是NaN 2、怎么判断一个函数是function、generator function、asyn...

  • 冷门小知识之萨其玛

    萨其玛是满族传统食品,满文意为甜品,是用精粉、鸡蛋、糖、芝麻、青红和瓜仁等原料精制而成的糕点,原为清陵祭祀的祭品,...

  • 冷门小知识之郁金香现象

    1636年的荷兰社会是培育投机者的温床。人们赌博和投机的欲望达到空前的高度。以往表面上看起来不值一钱的郁金香,在舆...

  • 古代地震冷门小知识

    四川是中国地震发生较为频繁的地区之一。在古代,每次大地震带来的灾难都是毁灭性的。不少因地震引起灾荒的地方,甚至会出...

  • 有点冷门的小知识

    1.常说“吃饭,趁热吃”,但常吃过热的饭菜容易的食管癌。不过,不是支持吃冷饭冷菜,而是吃温热的饭菜。常羡慕别人吃饭...

  • iOS面试知识总结之文章收录

    iOS面试知识总结之文章收录

  • 可转债小知识

    可转债小知识 HELLO 大家好,我是书懒懒。欢迎来到我们的可转债小知识讲堂。 这次和大家讲讲可转债这个冷门但赚钱...

网友评论

      本文标题:iOS 之 冷门小知识

      本文链接:https://www.haomeiwen.com/subject/vzhlettx.html