黑马程序员_iOS 的基础控件之UIButton

iOS,Android,Java培训,期待与您的交流
iOS应用开发的一项内容就是用户界面的开发。不管应用程序实际包含的逻辑有多复杂,如果这个应用程序没有提供友好的图形用户界面,將很难吸引用户。作为一个程序设计者,必须优先考虑用户的感受,一定要让用户感到爽,这个应用程序才有价值。
iOS所有的UI控件都继承了UIView。iOS的UI控件大致可分为如下三类:
1、静态控件:静态控件通常只是继承了UIView,只用于显示应用状态,用户不能对静态控件执行任何才做。比如UILabel,UIImageView。
2、活动控件:大部分活动控件都继承了UIControl,活动控件可以与用户交互,当用户操作活动控件时,该控件可以激发相应的事件,该事件就会激发该控件上为该事件绑定的事件处理方法。比如UIButton。
3、被动控件:被动控件可以接受用户操作,但他们通常仅用于接受用户输入的值,直到用户输入完成为止,这些控件不会触发任何事件。比如UITextField。
1    UIView
UIView是所有UI控件的父类,首先介绍UIView常用的属性。
frame:其实质是一个CGRect结构体,代表自身在父控件里的位置和大小。iOS的坐标原点是左上角。
bounds:也是一个CCGRect结构体,和frame一样,也代表自身在父控件里的位置和大小,但其位置始终是(0,0)
    // 1.创建按钮
    // 1.1.创建
    UIButton *btn = [[UIButton alloc] init];
    
    // 1.2.设置按钮的尺寸和位置,位置(0,0),宽度100,高度100
    btn.frame = CGRectMake(0, 0, 100, 100);

center:代表该控件在父控件里的中心位置坐标,可以用来改变控件的位置。
    // 1.创建按钮
    // 1.1.创建
    UIButton *btn = [[UIButton alloc] init];
    
    // 1.2.设置按钮的尺寸和位置,位置(0,0),宽度100,高度100
    btn.frame = CGRectMake(0, 0, 100, 100);
    
    //调整按钮的位置
    btn.center = CGPointMake(70, 60);
transform:代表控件的形变属性,比如旋转、放大、缩小
    // 1.创建按钮
    // 1.1.创建
    UIButton *btn = [[UIButton alloc] init];
    
    // 1.2.设置按钮的尺寸和位置,位置(0,0),宽度100,高度100
    btn.frame = CGRectMake(0, 0, 100, 100);
    
    //將按钮放大到1.2倍
    btn.transform = CGAffineTransformScale(btn.transform, 1.2, 1.2);

    //將按钮旋转向右旋转45度
    btn.transform = CGAffineTransformRotate(btn.transform, M_PI_4 * -1);
2    UIButton
UIButton是最普通的UI控件,它的直接父类是UIControl,所以它可以与用户交互,并激发相应的事件处理方法。通过IBAciton绑定,將UIButton的特定事件绑定到控制器的某个方法上,当UIButton发生此事件时,將会触发控制器的对应方法。
UIButton除了继承UIView的基本属性,还能设置如下属性:
1、Type:该属性用于为按钮选择类型,包括Custom,System,InfoLight、InfoDark、AddContact
2、StateConfig:该属性用于配置该按钮的状态,包括Default、Highlighted、Selected、Disabled
3、Title:用于设置按钮显示的文本内容
4、Image:该属性用于为该按钮设置一张图片,如果设置了该属性,该按钮将会表现成一个图片按钮
5、Background:该属性用于设置背景图片,不影响Title的使用
3    按钮操作
通过按钮操作的例子,介绍基本的iOS开发,以及UIButton的用法。该例子的界面如下图所示。
黑马程序员_iOS 的基础控件之UIButton_第1张图片
上图中的所有控件都是UIButton,最上面的UIbutton带有背景图片以及Title,左边的上下左右按钮控制方向,右边的四个控制左旋转,右旋转,放大,缩小。
上下左右按钮的监听方法是 - (IBAction)run: , 监听Touch Up Inside事件。点击上按钮,图片向上移动50个单位,其他按钮,依次类推。
    // 0.动画(头部-开始动画)
    [UIView beginAnimations:nil context:nil];
    // 设置动画的执行时间
    [UIView setAnimationDuration:1.0];
    
    // 1.先取出frame,结构体属性的成员不能直接修改
    CGRect tempFrame = _btn.frame;
    
    // 2.取出按钮的tag标记
    int tag = [sender tag];
    // CGFloat delta = 100;
    switch (tag) {
        case 1: // 上
            tempFrame.origin.y -= kDelta;  //kDelta是定义好的宏,等于50
            break;
            
        case 2: // 右
            tempFrame.origin.x += kDelta;
            break;
            
        case  3: // 下
            tempFrame.origin.y += kDelta;
            break;
            
        case 4: // 左
            tempFrame.origin.x -= kDelta;
            break;
            
        default:
            break;
    }
    
    // 3.重新赋值按钮的frame
    _btn.frame = tempFrame;
    
    // 4.动画(尾部-提交动画-执行动画)
    [UIView commitAnimations];
左旋转,右旋转监听方法(IBAction)rotate:,监听Touch Up Inside事件。点击左旋按钮,图片向左旋转45度,点击右旋按钮,图片向右旋转45度。
- (IBAction)rotate:(id)sender {
//    _angle -= M_PI_4;
    
    // 0.动画(头部-开始动画)
    [UIView beginAnimations:nil context:nil];
    // 设置动画的执行时间
    [UIView setAnimationDuration:1.0];
    
    // 弧度 3.14 - π
    // 角度 180
    // 向左旋转45°
//    _btn.transform = CGAffineTransformMakeRotation(- M_PI_4);
//    _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * (10 == tag?-1:1));
    
    int tag = [sender tag];
    if (10 == tag) { // 左
        _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * -1);
    } else { // 右
        _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * 1);
    }
    
    // 4.动画(尾部-提交动画-执行动画)
    [UIView commitAnimations];
}
放大缩小监听方法-IBAction)scale:,监听Touch Up Inside事件。每次放大缩小0.2个单位。
-IBAction)scale:(id)sender {
    // 0.动画(头部-开始动画)
    [UIView beginAnimations:nil context:nil];
    // 设置动画的执行时间
    [UIView setAnimationDuration:1.0];
    
    // 1.计算缩放比例
    CGFloat scale = [sender tag] == 20 ? 1.2 : 0.8;
    // 2.修改按钮形变属性
    _btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);
    
    // 4.动画(尾部-提交动画-执行动画)
    [UIView commitAnimations];
    NSLog(@"放大后的高度%f",_btn.bounds.size.height);
}
iOS,Android,Java培训,期待与您的交流

你可能感兴趣的:(iOS)