• UI- 基础控件零散知识点回归


        1.framecenterounds

         1> frame:能修改位置和尺寸

         2> center:能修改位置

         3> bounds:能修改尺寸(xy一般都是0)

         

        2.在.m中声明的方法是私有方法,外界无法直接访问,保证了封装性

         

         3.UIView 一般翻译叫做:视图控件组件

         UIButton、UILabel、UITextField都继承自UIView

         3.1.UIImageView和UIButton

         1> 使用场合

         * UIImageView: 如果仅仅是显示图片,不需要监听图片的点击

         * UIButton: 既要显示图片,又要监听图片的点击

         2> 相同:能显示图片

         3> 不同点

         * UIButton能处理点击事件, UIImageView不能处理点击事件

         * UIButton既能显示图片, 又能显示文字

         * UIButton能同时显示两张图片

         * UIButton继承自UIControl, 因此默认就能处理事件  UIButton --> :UIControl -->:UIView

         * UIImageView继承自UIView, 因此默认就不能处理事件 UIImageView --> :UIView

         4> 如何选择

         UIButton:需要显示图片,点击图片后需要做一些特定的操作

         UIImageView:仅仅需要显示图片,点击图片后不需要做任何事情

         

         4.键盘的显示与隐藏

         resignFirstResponder

         当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘

         endEditing

         只要调用这个方法的控件内部存在第一响应者,就能退出键盘

         

         5.常用按钮的状态

         normal(普通状态)

         默认情况(Default)

         对应的枚举常量:UIControlStateNormal

         

         highlighted(高亮状态)

         按钮被按下去的时候(手指还未松开)

         对应的枚举常量:UIControlStateHighlighted

         

         disabled(失效状态,不可用状态)

         如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击

         对应的枚举常量:UIControlStateDisabled

         

         6.一个UIColor代表一种颜色,通过UIColor的类方法,可以获得很多常用的颜色

         + (UIColor *)blackColor;      // 0.0 white 黑色

         + (UIColor *)darkGrayColor;   // 0.333 white 深灰色

         + (UIColor *)lightGrayColor;  // 0.667 white 亮灰色

         + (UIColor *)whiteColor;      // 1.0 white 白色

         + (UIColor *)grayColor;       // 0.5 white 灰色

         + (UIColor *)redColor;        // 1.0, 0.0, 0.0 RGB 红色

         + (UIColor *)greenColor;      // 0.0, 1.0, 0.0 RGB 绿色

         + (UIColor *)blueColor;       // 0.0, 0.0, 1.0 RGB 蓝色

         + (UIColor *)cyanColor;       // 0.0, 1.0, 1.0 RGB 青色

         + (UIColor *)yellowColor;     // 1.0, 1.0, 0.0 RGB 黄色

         + (UIColor *)magentaColor;    // 1.0, 0.0, 1.0 RGB 品红

         + (UIColor *)orangeColor;     // 1.0, 0.5, 0.0 RGB 橙色

         + (UIColor *)purpleColor;     // 0.5, 0.0, 0.5 RGB 紫色

         + (UIColor *)brownColor;      // 0.6, 0.4, 0.2 RGB 棕色

         + (UIColor *)clearColor;      // 0.0 white, 0.0 alpha 清除颜色(空色)

         

        7. 一个UIImage对象代表一张图片,一般通过imageNamed:方法就可以通过文件名加载项目中的图片

         (文件名可以省略扩展名)

         UIImage *image = [UIImage imageNamed:@"btn_01"];

         

        8. NSBundle

         1> 一个NSBundle代表一个文件夹,利用NSBundle能访问对应的文件夹

         2> 利用mainBundle就可以访问软件资源包中的任何资源

         

        9. 将属性放在get方法中初始化的方式,称为“懒加载””延迟加载”

         

        10. UIImageView帧动画相关属性和方法

         @property(nonatomic,copy) NSArray *animationImages;

         需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片)

         @property(nonatomic) NSTimeInterval animationDuration;

         帧动画的持续时间

         @property(nonatomic) NSInteger animationRepeatCount;

         帧动画的执行次数(默认是无限循环)

         - (void)startAnimating;

         开始执行帧动画

         - (void)stopAnimating;

         停止执行帧动画

         - (BOOL)isAnimating;

         是否正在执行帧动画

         

         11. UIImage的2种加载方式

         方式一:有缓存(图片所占用的内存会一直停留在程序中)

         + (UIImage *)imageNamed:(NSString *)name;

         name是图片的文件名

         

         方式二:无缓存(图片所占用的内存会在一些特定操作后被清除)

         + (UIImage *)imageWithContentsOfFile:(NSString *)path

         - (id)initWithContentsOfFile:(NSString *)path;

         path是图片的全路径

      例如:

      1.1 定义 UIImageView

        UIImageView *imgView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];

        

        1.2 定义 NSMutableArray 保存所有图片

        NSMutableArray *animationImgsArrM = [[NSMutableArray alloc] init];

        int num = 40;

        for(int i = 0 ; i <= num  ; i++ ){

            图片的名称

            NSString *imgName = [NSString stringWithFormat:@"%@_%02d.jpg", imgView, i ];

            在创建比较小的,并且常用的图片时,可以使用imageNamed:方法创建

            UIImage *img = [UIImage imageNamed:imgName];

            

            如果创建的图片很多,并且比较大的话,应该使用这种方式创建

            NSString *filePath = [[NSBundle mainBundle] pathForResource:imgName ofType:nil];

            UIImage *img = [[UIImage alloc]initWithContentsOfFile:filePath];

            把图片添加到数组中

            [animationImgsArrM addObject:img];

        }

         

         12. 用模型取代字典的好处

         1> 使用字典的坏处:

         一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲

         dict[@"name"] = @"Jack";

         NSString *name = dict[@"name"];

         手敲字符串key,key容易写错

         Key如果写错了,编译器不会有任何警告和报错,造成设错数据或者取错数据

         2> 使用模型的好处:

         所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业

         模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性

         使用模型访问属性时,编译器会提供一系列的提示,提高编码效率

         app.name = @"Jack”;

         NSString *name = app.name;

         

         13. instancetype

         instancetype在类型表示上,跟id一样,可以表示任何对象类型

         instancetype只能用在返回值类型上,不能像id一样用在参数类型上

         instancetype比id多一个好处:编译器会检测instancetype的真实类型

         

         14. Xib文件可以用来描述某一块局部的UI界面

         Xib文件的加载

         方法1

         NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"AppView" owner:nil options:nil];

         这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中

         方法2

         bundle参数可以为nil,默认就是main bundle

         UINib *nib = [UINib nibWithNibName:@"MJAppView" bundle:[NSBundle mainBundle]];

         NSArray *objs = [nib instantiateWithOwner:nil options:nil];

         在开发阶段,面向开发者的是xib文件; 当把应用装到手机上时,xib文件就会转为nib文件

         15. Xib和storyboard对比

         1> 共同点:

         都用来描述软件界面

         都用Interface Builder工具来编辑

         2> 不同点

         Xib是轻量级的,用来描述局部的UI界面

         Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

         

         16. UILabel的常见设置

         @property(nonatomic,copy)   NSString           *text;

         显示的文字

         @property(nonatomic,retain) UIFont             *font;

         字体

         @property(nonatomic,retain) UIColor            *textColor;

         文字颜色

         @property(nonatomic)        NSTextAlignment    textAlignment;

         对齐模式(比如左对齐、居中对齐、右对齐)

         

         17. UIFont --> UIFont代表字体,常见创建方法有以下几个:

         + (UIFont *)systemFontOfSize:(CGFloat)fontSize;   系统默认字体

         + (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize;  粗体

         + (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize;  斜体

         

         18. UIButton的常见设置

         - (void)setTitle:(NSString *)title forState:(UIControlState)state;

         设置按钮的文字

         - (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;

         设置按钮的文字颜色

         - (void)setImage:(UIImage *)image forState:(UIControlState)state;

         设置按钮内部的小图片

         - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;

         设置按钮的背景图片

         btn.titleLabel.font = [UIFont systemFontOfSize:13];

         设置按钮的文字字体(需要拿到按钮内部的label来设置)

         - (NSString *)titleForState:(UIControlState)state;

         获得按钮的文字

         - (UIColor *)titleColorForState:(UIControlState)state;

         获得按钮的文字颜色

         - (UIImage *)imageForState:(UIControlState)state;

         获得按钮内部的小图片

         - (UIImage *)backgroundImageForState:(UIControlState)state;

         获得按钮的背景图片

         

         19.使用xib封装一个自定义view的步骤

         1> 新建一个继承UIView的自定义view,假设类名叫做(AppView)

         2> 新建一个MJAppView.xib文件来描述MJAppView内部的结构

         3> 修改UIView的类型为MJAppView真是类型

         4> 将内部的子控件跟MJAppView进行属性连线

         5> MJAppView提供一个模型属性

         6> 重写模型属性的set方法,因为在set方法中可以拿到外界传递的模型数据

         7> 把模型数据拆开,分别设置数据到对应的子控件中

         8> 提供一个创建MJAppView的类方法,将读取xib文件的代码屏蔽起来

      

      20. 清屏

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

      

  • 相关阅读:
    东软中标清华大学一站式服务平台项目
    抢占DevOps制高点,东软UniEAP&SaCa平台强势崛起
    智慧监狱来了!SaCa EMM 助推现代监狱建设迈上新台阶
    移动金融办公威胁不断,这些坑千万别跳!
    比悲伤更悲伤的故事,那就是...
    这还是你见过的大学实验室吗?
    越智能?越危险?技术到底应不应该进步?
    新一代的IT实验室长啥样?
    产品“佩奇”闹元宵,新春点亮新网站
    危机四伏的千亿级金融放贷市场,我们能做什么?
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/5373584.html
Copyright © 2020-2023  润新知