1、static:

  所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。

  静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和
  退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。
 
2、匿名类别:

  写在当前类中的类别称为匿名类别

  匿名类别只能当前类访问,其它类无法访问

  匿名类别可以省略声明部分

3、控制器的跳转

  模态 ,跳转到mainVC这个视图控制器,

  [self presentViewController:mainVC animated:YES completion:nil];

  [self.navigationController pushViewController:mainVC animated:YES];

4、UITextField常用属性

  创建用户名文本框

  UITextField *uNameField = [[UITextField alloc]initWithFrame:CGRectMake(uNameLbl.right + 10 , uNameLbl.y , kDeviceWidth -   uNameLbl.x - uNameLbl.right - 10 , uNameLbl.height)];

  [self.view addSubview:uNameField];

   uNameField.backgroundColor = [UIColor lightGrayColor];

  设置用户名文本框的背景图片

  uNameField.background = [UIImage imageNamed:@"login_input_n"];

  定义一个图片视图

  UIImageView *leftImgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 7, 40, 26)];

  leftImgView.image = [UIImage imageNamed:@"register_name_07"];

  设置图片的显示模式为按比例缩放

  leftImgView.contentMode = UIViewContentModeScaleAspectFit;

  设置用户名文本框左侧视图

  uNameField.leftView = leftImgView;

  设置文本框左侧视图的显示模式

  uNameField.leftViewMode = UITextFieldViewModeAlways;

  设置文本框右侧的清除按钮

  uNameField.clearButtonMode = UITextFieldViewModeWhileEditing;

  设置用户名文本框的代理

  设置当前文本框为密文显示

  pwdField.secureTextEntry = YES;

  uNameField.delegate = self;

  设置文本框的Tag值

  uNameField.tag = 10;

4、注册键盘显示和隐藏通知

  注册键盘显示的通知

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showKeyboard:) name:UIKeyboardWillShowNotification   object:nil];

  注册键盘隐藏的通知

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideKeyboard: ) name:UIKeyboardWillHideNotification   object:nil];

  }

5、隐藏键盘

  点击屏幕空白时隐藏键盘

  -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

[self.view endEditing:YES];

  }

6、用户交互

  允许当前对象可以与用户交互

  self.userInteractionEnabled = YES;

7、清屏

  [[self.view subviews]makeObjectsPerformSelector:@selector(removeFromSuperview)];

8、 设置 导航栏-----状态栏

BOOL isHidden = self.navigationController.isNavigationBarHidden;

[self.navigationController setNavigationBarHidden:!isHidden];

设置状态栏的隐藏状态 在Info.plist 中添加 View controller-based status bar appearance  设置为NO

[[UIApplication sharedApplication] setStatusBarHidden:!isHidden];

  - (BOOL)prefersStatusBarHidden{

return YES;

  }

9 、获取完整路径的最后一部分

  NSString *fileName = [path lastPathComponent];

10 、获取按钮的名字

  [button currentTitle]

11、自动调整滚动视图的缩进 ,设置为NO 不让其调整

self.automaticallyAdjustsScrollViewInsets = NO;

12、 调整图片按比例缩放

imgView.contentMode = UIViewContentModeScaleAspectFill;

13、 是否允许选中TableView中的单元格

  allowsSelection 设置为NO即可

14、  从一个控制器跳转另一个控制器

  Modal形式

  [self presentViewController:myTableVC animated:YES completion:nil];

  push形式

  [self.navigationController pushViewController:firstVC animated:YES];

  show 形式

  [self showViewController:<#(nonnull UIViewController *)#> sender:<#(nullable id)#>];

15、 隐藏底部的Tabbar

  方法一:在推进去的控制器中写入该方法即可隐藏tabbar

  - (BOOL)hidesBottomBarWhenPushed{

return YES;

  }

  - 方法二:在控制器推进去之前处理

  self.hidesBottomBarWhenPushed=YES;

RegisteredViewController* registered = [[RegisteredViewController alloc]init];

[self.navigationController pushViewController:registered animated:YES];

self.hidesBottomBarWhenPushed=NO;

  - 方法三: 在控制器推进去之前处理

  - (void)viewWillAppear:(BOOL)animated{
  self.hidesBottomBarWhenPushed = YES;

  }

  - (void)viewWillDisappear:(BOOL)animated{

  self.hidesBottomBarWhenPushed = NO;

  }

16、 什么时候会触发layoutSubviews:

  layoutSubviews在以下情况下会被调用: 
  1、init初始化不会触发layoutSubviews 
  2、addSubview会触发layoutSubviews 
  3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化 
  4、滚动一个UIScrollView会触发layoutSubviews 
  5、旋转Screen会触发父UIView上的layoutSubviews事件 
  6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

 
17、可视化布局中UILable实现换行
 
  1、在xib中使用快捷键: Alt+Shift+Enter
  2、代码操作: 在Lable字符串需要换行的位置添加\n
 
 

UI- 不易记知识点汇总的更多相关文章

  1. Kendo UI 使用小知识点汇总

    本攻略适用于了解的kendo UI 的基本语法的人使用.如果还不了解Kendo UI的基本语法,请大力观摹Demo ,并自己动用写几个控件. 1.获取Kendo UI的控件实体,不必存成全局变量.   ...

  2. nginx几个知识点汇总

    WHY? 为什么用Nginx而不用LVS? 7点理由足以说明一切:1 .高并发连接: 官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2 - 3 万并发连接数.?2 .内存消耗少: 在 3 万 ...

  3. python全栈开发 * 10知识点汇总 * 180612

    10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...

  4. Android UI相关开源项目库汇总

    最近做了一个Android UI相关开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个st ...

  5. 清华大学OS操作系统实验lab1练习知识点汇总

    lab1知识点汇总 还是有很多问题,但是我觉得我需要在查看更多资料后回来再理解,学这个也学了一周了,看了大量的资料...还是它们自己的80386手册和lab的指导手册觉得最准确,现在我就把这部分知识做 ...

  6. c++ 函数知识点汇总

    c++ 函数知识点汇总 swap函数 交换两个数组元素 比如 swap(a[i],a[j]); 就是交换a[i] 和 a[j] 的值 strcpy() 复制一个数组元素的值到另一个数组元素里 strc ...

  7. 前端开发 JavaScript 干货知识点汇总

    很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...

  8. BBS项目知识点汇总

    目录 bbs项目知识点汇总 一. JavaScript 1 替换头像 2 form表单拿数据 3 form组件error信息渲染 4 添加html代码 5 聚焦操作 二 . html在线编辑器 三 . ...

  9. Java面试知识点汇总

    Java面试知识点汇总 置顶 2019年05月07日 15:36:18 温柔的谢世杰 阅读数 21623 文章标签: 面经java 更多 分类专栏: java 面试 Java面试知识汇总   版权声明 ...

随机推荐

  1. Linux学习笔记之文件权限

    前言: 说起文件权限,大家在windows下应该很熟悉就对文件右键属性,然后配置一点什么读写之类的权限,然后可以分配到每个的人. 对于linux 我先为大家介绍一个使用者和组和其他的概念说明一下 文件 ...

  2. selector模块

    selector selectors模块,此模块允许高级和高效的I / O多路复用,构建在select模块原语上.鼓励用户使用此模块,除非他们需要精确控制所使用的操作系统级原语.( 默认使用epoll ...

  3. [intellij]create gradle project

    https://intellij-support.jetbrains.com/hc/en-us/community/posts/206806425/comments/206797339

  4. 使用哈工大LTP进行句法分析

    作者注:本教程旨在对哈工大LTP在github上的LTP4J(LTP的java版本)教程的补充,请结合以下参考网站一起食用. 参考网站: [1]哈工大语言技术平台云官网--LTP使用文档 http:/ ...

  5. go——接口

    Go语言提供了另外一种数据类型,即接口,它把所有具有共性的方法定义在一起,任何其它类型只要实现了这些方法就是实现了这个接口. 接口代表一种调用契约,是多个方法声明的集合.在某些动态语言里,接口(int ...

  6. Alluxio 安装与配置

    一.概述 Alluxio, formerly Tachyon, enables any application to interact with any data from any storage s ...

  7. 对Servlet请求或响应进行JMockit测试

    对Servlet请求及响应进行mock方法, 通过getMockInstance方法对servlet进行打桩,对servlet提供的方法进行mock,替代真正的servlet请求或响应. 参考链接: ...

  8. 【Java】流与文件(端口 & 文件读写对象)

    概述: 1.input和output是相对于内存而言的.输入(input)就是写入到内存里,输出(output)就是把内存里的东西写到外面. 2.操作内存里的东西非常便利,要么声明变量,要么new对象 ...

  9. Django 知识补漏单例模式

    Django 知识补漏单例模式 单例模式:(说白了就是)创建一个类的实例.在 Python 中,我们可以用多种方法来实现单例模式: 1.文件导入的形式(常用) s1.py class Foo(obje ...

  10. MySQL-5.7设置InnoDB表数据文件存储位置

    1.表空间 Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间. 共享表空间以及独立表空间都是针对数据的存储方式而言的. 共享表空间: ...