zoukankan      html  css  js  c++  java
  • UI控件(复习一下)

    如何修改控件状态
    • 可见,确实需要经常修改控件状态
    • 那如何去修改控件的状态呢?方法很简单
    ➢ 每一个UI控件都是一个对象
    ➢ 修改UI控件的状态,其实就是修改控件对象的属性
    ➢ 比如修改UILabel显示的文字,就修改UILabel对象的text属性即可
    ➢ 比如修改UIImageView显示的图片,就修改UIImageView对象的image属性即可
    • 不难想到,每一个UI控件肯定都有很多属性,比如:
    ➢ UIProgressView进度条控件有progress属性(进度值)
    ➢ UILabel和UITextField都有text属性(显示文字)

    ➢......
    虽然,每一个UI控件都有自己的独特属性,但是有些属性是每个UI控件都具备的,

    比如每一个UI控 件都有自己的位置和尺寸、都有自己的父控件、子控件。

    于是,所有的UI控件最终都继承自 UIView,UI控件的公共属性都定义在UIView中,

    比如:

    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; 控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
    @property(nonatomic) CGRect bounds; 控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的xy一般
    为0)
    @property(nonatomic) CGPoint center;
    控件中点的位置(以父控件的左上角为坐标原点)

    在UIKit中,坐标系的原点(0,0)在左上角,x值向右正向延伸,y值向下正向延伸

    UIView的常见方法
    ➢ - (void)addSubview:(UIView *)view;
    ➢ 添加一个子控件view
    ➢ - (void)removeFromSuperview;
    ➢ 从父控件中移除
    ➢ - (UIView *)viewWithTag:(NSInteger)tag;
    ➢ 根据一个tag标识找出对应的控件(一般都是子控件)

    去除autolayout
    • 如果发现通过代码无法修改控件的位置 或者尺寸时,应该去掉storyboard里面的 autolayout功能,这是自iOS6开始出现的 特性
    • 顾名思义,autolayout是用来自动布局 的,用来束缚控件的位置和尺寸。去掉 这个功能,控件的位置和尺寸就不再有 一些固定的束缚。

    UIButton的状态
    • normal(普通状态)
    ➢ 默认情况(Default)
    ➢ 对应的枚举常量:UIControlStateNormal
    • highlighted(高亮状态)
    ➢ 按钮被按下去的时候(手指还未松开)
    ➢ 对应的枚举常量:UIControlStateHighlighted
    • disabled(失效状态,不可用状态)
    ➢ 如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击

    ➢ 对应的枚举常量:UIControlStateDisabled

    设置按钮的背景图片
    • 设置按钮在不同状态下的背景图片 (为了保证高亮状态下的图片正常显示,必须设置按钮的type为custom)

    修改头像按钮的位置
    • 通过修改控件的frame属性就可以修改控件在屏幕上的位置和尺寸
    • 比如点击“向上”按钮,让按钮的y值减小即可
    - (IBAction)top:(UIButton *)sender {
    CGRect btnFrame = self.headBtn.frame;
    btnFrame.origin.y -= 10;
    self.headBtn.frame = btnFrame;
    }
    • 下面代码是错误的,OC语法规定:不允许直接修改对象的结构体属性的成员
    self.headBtn.frame.origin.y -= 10;

    实现简单动画
    • 在iOS开发中,想实现一些小动画是非常容易的
    ➢ 系统会根据某个属性值的改变⾃自动形成动画
    ➢ 比如x值本来是10,然后x值突然改为了100,系统会通过平移动画的方式让x值慢慢从 10变到100
    • 简易动画大致有2种方式:
    头尾式
    [UIView beginAnimations:nil context:nil]; /** 需要执行动画的代码 **/
    [UIView commitAnimations];
    Block式
    [UIView animateWithDuration:0.5 animations:^{
    /** 需要执行动画的代码 **/ }];

    修改控件的位置和尺寸
    • 通过以下属性可以修改控件的位置 ➢ frame.origin
    ➢ center
    • 通过以下属性可以修改控件的尺寸 ➢ frame.size
    ➢ bounds.size

    transform属性
    利用transform属性可以修改控件的位移(位置)、缩放、旋转
    创建一个transform属性
    CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty) ;

    CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);
    CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
    ➢ (angle是弧度制,并不是角度制)
    在某个transform的基础上进行叠加
    CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat
    ty);
    CGAffineTransform CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy);
    CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);

    • 清空之前设置的transform属性
    view.transform = CGAffineTransformIdentity;

    常见类型
    • 一个UIColor代表一种颜色,通过UIColor的类方法,可以获得很多常用的颜色
    ➢ + (UIColor *)blackColor;
    ➢ + (UIColor *)darkGrayColor;
    ➢ + (UIColor *)lightGrayColor;
    ➢ + (UIColor *)whiteColor;
    ➢ + (UIColor *)grayColor;
    ➢ + (UIColor *)redColor;
    ➢ + (UIColor *)greenColor;
    ➢ + (UIColor *)blueColor;
    ➢ + (UIColor *)cyanColor;
    ➢ + (UIColor *)yellowColor;
    ➢ + (UIColor *)magentaColor;
    ➢ + (UIColor *)orangeColor;
    ➢ + (UIColor *)purpleColor;
    ➢ + (UIColor *)brownColor;
    ➢ + (UIColor *)clearColor; (空色)


  • 相关阅读:
    Windows环境下安装Hadoop+Hive的使用案例
    基于hadoop的离线分析大数据工具Hive的架构图
    springboot集成elasticsearch
    亿级流量场景下,大型架构设计实现【全文检索高级搜索---ElasticSearch篇】-- 中
    海量数据,大数据处理技术--分布式数据库【Hbase】
    亿级流量场景下,大型架构设计实现【全文检索高级搜索---ElasticSearch篇】-- 上
    zookeeper安装以及遇到的一些坑
    亿级流量场景下,大型架构设计实现【2】---storm篇
    用到UdpClient的一点经验
    随笔
  • 原文地址:https://www.cnblogs.com/ljcgood66/p/4977660.html
Copyright © 2011-2022 走看看