美文网首页程序员iOS Developer
基础 (十) : UIView常见属性

基础 (十) : UIView常见属性

作者: JonesCxy | 来源:发表于2016-08-11 09:13 被阅读131次
    未命名图片.png 未命名图片1.png 未命名图片2.png

    如何修改控件状态

    如何修改控件的状态呢?方法很简单:

    每一个UI控件都是一个对象

    修改UI控件的状态,其实就是修改控件对象的属性

    比如修改UILabel显示的文字,就修改UILabel对象的text属性即可

    比如修改UIImageView显示的图片,就修改UIImageView对象的image属性即可

    不难想到,每一个UI控件肯定都有很多属性,比如:

    UIProgressView进度条控件有progress属性(进度值)

    UILabel和UITextField都有text属性(显示文字)

    ……

    虽然,每一个UI控件都有自己的独特属性,但是有些属性是每个UI控件都具备的,比如每一个UI控件都有自己的位置和尺寸、都有自己的父控件、子控件。于是,所有的UI控件最终都继承自UIView,UI控件的公共属性都定义在UIView中,比如:

    frame :位置和尺寸

    center :中心点位置

    ……

    UIView的常见属性

    @property(nonatomic,readonly) UIView *superview;

    获得自己的父控件对象

    @property(nonatomic,readonly,copy) NSArray *subviews;

    获得自己的所有子控件对象

    @property(nonatomic) NSInteger tag;

    控件的ID(标识),父控件可以通过tag来找到对应的子控件

    @property(nonatomic) CGAffineTransform
    transform;

    控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

    @property(nonatomic) CGRect frame;

    控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)

    可以定义控件的位置(origin)和大小(size)

    @property(nonatomic) CGRect bounds;

    控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)

    注意:如果没有设置位置的情况下,把自己的左上角放在控制器的中心点

    可以定义控件的大小W H(size)

    @property(nonatomic) CGPoint center;

    控件中点的位置(以父控件的左上角为坐标原点)

    可以定义控件的位置X Y(center)

    未命名图片4.png

    UIView的常见方法

    • (void)addSubview:(UIView *)view;
      添加一个子控件view

    • (void)removeFromSuperview;
      从父控件中移除

    • (UIView *)viewWithTag:(NSInteger)tag;
      根据一个tag标识找出对应的控件(一般都是子控件)

    常用的Xcode插件
    Xcode插件大全
    http://www.cocoachina.com/industry/20130918/7022.html

    必备
    文档注释生成:https://github.com/onevcat/VVDocumenter-Xcode
    自动检索图片名:https://github.com/ksuther/KSImageNamed-Xcode
    插件管理工具:https://github.com/mneorr/Alcatraz

    移除插件(可以使用上面提到的插件管理工具Alcatraz)
    到~/Library/Application Support/Developer/Shared/Xcode/Plug-ins文件夹中删除

    插件失效修复:http://joeshang.github.io/2015/04/10/fix-xcode-upgrade-plugin-invalid/

    未命名图片3.png

    ********************笔记**********************


    1.监听:监视我们的肢体按下(点击)哪个按钮(可以被点击的东西)事件(系统调用的是那个方法)

    2.storyboard: 描述软件界面的, 目前理解: 应用程序一启动就会加载这个文件

    3.文字 是使用UILabel 按钮使用 UIButton 创建对象

    4.控制器 : 控制器就是继承自UIViewController控制器就是管理"当前的软件界面"的所有事件(点击,拖拽)

    5.IBAction 返回值相当于void 能让storyboard中的控件跟(方法)代码进行连线

    1. 连线:
      why:当按钮需要"控制器"处理某些事件的时候,那么这个处理就应该交给控制器的方法来做

    what:只有在方法返回类型是IBAction的情况下,才能连线

    how:首先 方法的返回值必须是IBAction 按xcode上右上角的双环按钮,直接脱线

    1. 常见错误
      reason:'[<ViewController 0x7fc07ae36380> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.'

    这个情况一般是: 属性(label)之间连线,属性不存在,但是线还在

    其他情况kvc:
    reason:'-[ViewController blueClick]: unrecognized selector sent to instance 0x7ffd63828e90'
    找不到按钮的方法(不可识别的方法)(blueClick)

    1. 拷贝的时候会直接把线也一起copy(注意点)

    2. 分类和类扩展
      类扩展:可以扩展属性,成员变量,方法,一般情况下属性都是放在类扩展内,苹果官方也是这么建议的(没必要让外界知道封装性)
      分类:只能扩展方法

    3. storyboard 应用程序已启动就会加载main.storyboard
      , 创建箭头指向的控制器,初始化控制器内部的所有UI(UI进阶会讲app的启动原理)
      注意点:类型不匹配不能连线

    11.superview: 获取当前的控件的父控件 (获取到调用者(谁调用的谁就是调用者)父控件) self.btn.superview self.btn 就是调用者

    12.subviews :获取当前控件的所有子控件, 返回一个装满控件的数组获取调用者的所有子空间
    self.purpleView.subviews
    self.purpleView 就是调用者

    13.addSubView: 添加一个子控件,添加到调用者身上(谁调用这个方法那么谁就是调用者)

    14.removeFromSuperview:从父控件把当前(调用者)控件移除

    [xiaojian removeFromSuperview]
    [liuqi addSubView:xiaojian]

    15.viewWithTag: 根据调用内部子空间的tag找出对应的子控件

              1. 直接子控件
    
              2. 按顺序找子空间内部的所有自控,然后找后面自控件的所有子控件 
    

    16.frame 既能设置尺寸也能设置位置
    设置控件在父控件中的尺寸和位置

    17.bounds 只能设置尺寸

    设置控件在父控件中的尺寸

    如果没有位置的话,那么使用自己的中心放在左上角

    18.center 只能设置位置

    设置控件的中心点在父控件中的位置

    1. OC 不允许直接修改对象的 结构体的 成员的 属性

    解决的方案 command + ]
    来一个临时的frame 存储对象的frame

    CGRect tempFrame = self.myBtn.frame;

      直接改变临时的frame
    

    tempFrame.origin.y -= 10;

      赋值给对象的frame
    

    self.myBtn.frame = tempFrame;



    1. UILabel
    1. text 设置label的文字
    1. textcolor 设置label的文字颜色
    1. textAlignment 对齐方式
    1. numberOfLines 换行个数 0 "自动换行"
    1. linesBreakMode 缩进方式 ...abc abc... a..bc
    1. font 字体大小和样式 (系统默认样式, 斜体样式,粗体样式)

      font  系统默认样式  斜体   粗体
      

      系统样式

      label.font = [UIFont systemFontOfSize:19.0f];
      

      粗体

      label.font = [UIFont boldSystemFontOfSize:24.0f];

      斜体
      label.font = [UIFont italicSystemFontOfSize:24.0f];

    2. imageView

    contentMode 
    

    拉伸至填充整个UIImageView
    UIViewContentModeScaleToFill,

    等比例拉伸 至自适应
    UIViewContentModeScaleAspectFit,

        等比例拉伸  至填充     
    

    UIViewContentModeScaleAspectFill,

        不拉伸  不缩放 显示位置     
    

    UIViewContentModeCenter,

    UIViewContentModeTop,

    UIViewContentModeBottom,

    UIViewContentModeLeft,

    UIViewContentModeRight,

    UIViewContentModeTopLeft,

    UIViewContentModeTopRight,

    UIViewContentModeBottomLeft,

    UIViewContentModeBottomRight,

    1. 缓存

      UIImage*img = [UIImage imageNamed:iconName];

      通过这种方式一定有缓存
    

    使用imageWithContentsOfFile 没有缓存 用完就干掉

    用完了 必须替换图片

    1. bundle

    就是一个文件

    mainbundle 资源文件夹 里面装的是所有资源文件

    5.images.xcassets 可以更改图片的属性 不能获取全路径(因为它是一个压缩包)

      不考虑缓存
    
    
      经常使用的
    

    直接放在项目里 可以获取全路径 但是不能改图片的属性

      考虑缓存
    
    
      不经常使用
    
    1. UIButton
    1. 不能直接给按钮的titleLabel/ imageView赋值
      因为这样赋值按钮不知道  你需要是给它的那个状态下的属性赋值
    
    2. [btn addTarget:self action:@selector(click:)
    

    forControlEvents:UIControlEventTouchUpInside];

        当触发了UIControlEventTouchUpInside
    

    事件之后 调用 控制器(self) 的
    click方法

    1. 任何继承自UIControl的类都可以使用addTarget方法

    [sender isKindOfClass:[UIButton class]]

      判断sender的类型是否匹配
    
    1. 按钮模糊(蒙版)的效果是因为按钮是system
    1. self.purpleView.subviews 0.1.2.3.4.5.6(addSubview的情况下)
    1. index%3 = cos
      index/3 = row
    1. 思路:
    1. 搭建软件界面
    1. 监听按钮的点击, 点击添加往紫色view中添加一个控件
    1. 设置位置
      1. 获取下标
    
    
      2. 根据下标计算cos  row
    
    
      3. cos 决定x   row  决定是y
    
    
      4. 添加一个黑色view,而这个view中包含两个自控件(图片,名称)
    
    
      5. x, y 只决定view  (不决定里面的子空间,子控件位置相对黑色的view)
    
    
          黑色的子控件建议: x都是0 ,图片的y 也0  名称的y 等于
    

    图片的高

      6. 设置数据
    
    
          采取的懒加载, 用到的时候再加载
    
    
          1. 创建两个数组
    
    
          2. 创建一个装满字典的数组
    
    
      颜色 一般情况  是用来调试的

    相关文章

      网友评论

        本文标题:基础 (十) : UIView常见属性

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