zoukankan      html  css  js  c++  java
  • 01-UIView的常见属性及方法 以UIButton为例

    一、  UIView的常见属性

    1.     superview

    •    @property(nonatomic,readonly) UIView *superview;
    •    获得自己的父控件对象

    2.     subviews

    •    @property(nonatomic,readonly,copy) NSArray *subviews;
    •    获得自己的所有子控件对象

    3.     tag

    •    @property(nonatomic) NSInteger tag;
    •    控件的ID标识,父控件可以通过tag来找到对应的子控件

    4.     frame

    •    @property(nonatomic) CGRect frame;
    •    控件所在矩形框的位置和尺寸(以父控件的左上角为坐标原点)

    5.     bounds

    •    @property(nonatomic) CGRect bounds;
    •    控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的xy永远为0)

    6.     center

    •    @property(nonatomic) CGPoint center;
    •    控件中点的位置(以父控件的左上角为坐标原点)

    7.     transform

    •    @property(nonatomic) CGAffineTransform transform;
    •    控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

    二、  以UIButton为例

    0.     初始化

    •    最普通的初始化方法
    UIButton *btn = [[UIButton alloc] initWithFrame:rect];
    •    快速初始化
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
      •     提示在OC开发中,实例化任何类型的非自定义对象,都请首先尝试一下是否存在快速定义方法。如果存在快速定义方法,就尽量不要使用init之类的方法实例化对象!
     

    type参数用来指定按钮的类型,一共有6种选择:

    UIButtonTypeCustom:无类型,按钮的内容需要自定义

    UIButtonTypeRoundedRect:圆角矩形按钮

    UIButtonTypeDetailDisclosure:显示明细按钮

    UIButtonTypeInfoLight:亮色信息按钮,用于深色背景

    UIButtonTypeInfoDark:深色信息按钮,用于浅色背景

    UIButtonTypeContactAdd:添加按钮

     •     说明:
      –前两种类型的按钮最常用
      –后四种类型的按钮设计,是为了保持用户统一的使用习惯

    1.     设置文字

    •    设置按钮在默认状态下显示的文字(第2个state参数用来指定按钮的状态)
    [btn setTitle:@"love" forState:UIControlStateNormal];
    •    设置按钮在长按状态下显示的文字
    [btn setTitle:@"whblovelap" forState:UIControlStateHighlighted];

    2.     设置文字颜色

    •    设置按钮在默认状态下的文字颜色为红色
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

    ps:修改第2个参数就可以设置其他状态下的文字颜色

    3.     设置字体

    •    先初始化字体对象,再设置字体
    // 使用系统自带的字体
    UIFont *font = [UIFont systemFontOfSize:16];
    
    // 设置字体
    btn.titleLabel.font = font;
    
    // 也可以使用其他字体
    UIFont *font = [UIFont fontWithName:@"Marker Felt" size:16];

    4.     设置背景颜色

    •    设置背景颜色为橙色
    [btn setBackgroundColor:[UIColor orangeColor]];

    5.     设置背景图片

    •    加载图片,再设置图片
    // 加载图片
    UIImage *image = [UIImage imageNamed:@"whblap.png"];
    
    // 设置按钮背景图像 
    [btn setBackgroundImage:image forState:UIControlStateNormal];
    // 设置按钮图像
    [btn setImage:image forState:UIControlStateNormal];
    •注意
      –背景图像会根据按钮的尺寸拉伸
      –按钮图像会居中显示在按钮中央位置
      –如果同时设置了按钮的图像和文字
      •按钮区域足够大,会并列显示图像和文字
      •如果区域不够大,优先显示图像

    ps:修改第2个参数就可以设置其他状态下的背景图片 

    6.     添加监听器

    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
    •   最后一个参数用来指定事件类型,这里传入的是单击事件
    •   按钮被单击后,就会调用self的click:方法,并且将按钮作为方法的第一个参数传入
    - (void) click:(UIButton *)btn
    {
    
    }

    三、  示例

    • 如下所示:通过点按按钮对中间那个图片按钮实现 上移、下移、左移、右移、左旋转、右旋转、放大、缩小 等功能
    • 开发步骤

    功能实现代码如下:

    //
    //  WHBLAPViewController.m
    //  03-按钮操作
    //
    //  Created by whblap on 14-5-26.
    //  Copyright (c) 2014年 whblap. All rights reserved.
    //
    
    #import "WHBLAPViewController.h"
    // 设置位移像素点
    #define displacement 10
    // 设置旋转角度大小
    // C++里面预编译处理 是这样写的  const int displacement  = 10;
    @interface WHBLAPViewController ()
    
    @end
    
    @implementation WHBLAPViewController
    
    - (void)btnClickWithBlock:(void (^)())block
    {
        // OC语法规定:不允许直接修改 某个对象中结构体属性的成员
        
        // 设置动画开始
        [UIView beginAnimations:nil context:nil];
        // 设置动画时间
        [UIView setAnimationDuration:0.5];
        // 传进一段代码
        block();
        // 结束动画
        [UIView commitAnimations];
    }
    
    #pragma mark - 控制按钮上下左右走动 
    - (IBAction)butten:(id)sender {
        [self btnClickWithBlock:^{
            CGRect tempFrame = _btn.frame; // 将_btn位置属性赋值给临时的tempFrame
            
            int tag = [sender tag];
            //    CGFloat displacement = 10;
            switch (tag) {
                case 1:
                    tempFrame.origin.y -= displacement;
                    break;
                case 2:
                    tempFrame.origin.y += displacement;
                    break;
                case 3:
                    tempFrame.origin.x -= displacement;
                    break;
                case 4:
                    tempFrame.origin.x += displacement;
                    break;
                    
                    default:
                    break;
            }
            _btn.frame = tempFrame;
        }];
    }
    - (IBAction)rotateAndZoom:(id)sender {
        [self btnClickWithBlock:^{
            switch ([sender tag]) {
                case 5:
                    _btn.transform = CGAffineTransformRotate(_btn.transform, -M_PI_4); //在原来比例——btn.transform下再放大
                    break;
                case 6:
                    _btn.transform = CGAffineTransformRotate(_btn.transform, +M_PI_4);
                    break;
                case 7:
                    _btn.transform = CGAffineTransformScale(_btn.transform, 1.2, 1.2);
                    break;
                case 8:
                    _btn.transform = CGAffineTransformScale(_btn.transform, 0.8, 0.8);
                    break;
            }
    
        }];
    }
    @end
    WHBLAPViewController.m

    • 如下所示:利用代码创建图片按钮 在不同的State Config下显示不同的图片及文字状态

    功能实现代码如下:

    #import "WHBLAPViewController.h"
    
    @interface WHBLAPViewController ()
    
    @end
    
    @implementation WHBLAPViewController
    
    #pragma mark 控制器的view加载完毕的时候会调用一次
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        // 1.创建按钮
        // 1.1.创建
        UIButton *btn = [[UIButton alloc] init];
        
        NSLog(@"viewdidload----%p", btn);
        
        // 1.2.设置按钮的尺寸和位置
        btn.frame = CGRectMake(0, 0, 100, 100);
        
        // 1.3.设置按钮普通状态下的属性
        // 1.3.1.设置背景图片
        UIImage *normal = [UIImage imageNamed:@"btn_01.png"];
        [btn setBackgroundImage:normal forState:UIControlStateNormal];
        // 1.3.2.设置文字
        [btn setTitle:@"点我啊" forState:UIControlStateNormal];
        // 1.3.3.设置文字颜色
        [btn setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
        
        // 1.4.设置按钮高亮状态下的属性
        // 1.4.1.设置背景图片
        UIImage *high = [UIImage imageNamed:@"btn_02.png"];
        [btn setBackgroundImage:high forState:UIControlStateHighlighted];
        // 1.4.2.设置文字
        [btn setTitle:@"摸我干啥" forState:UIControlStateHighlighted];
        // 1.4.3.设置文字颜色
        [btn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
        
        // 1.5.监听按钮点击
        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
        
        // 2.添加按钮到控制器的view中
        [self.view addSubview:btn];
        
        // 3.添加文本输入框
        UITextField *field = [[UITextField alloc] init];
        field.frame = CGRectMake(100, 100, 100, 50);
        field.backgroundColor = [UIColor redColor];
        
        // 中点的x
        CGFloat centerX = self.view.frame.size.width * 0.5;
        CGFloat centerY = self.view.frame.size.height * 0.5;
        field.center = CGPointMake(centerX, centerY);
        
        // 设置字体
        field.font = [UIFont systemFontOfSize:30];
        
    //    [field setBackgroundColor:<#(UIColor *)#>]
        [self.view addSubview:field];
    }
    
    #pragma mark 监听按钮点击
    - (void)btnClick:(UIButton *)btn
    {
        
    }
    @end
    WHBLAPViewController
  • 相关阅读:
    百奥谷
    3月13日火箭VS老鹰
    百度 hi 下载地址(内测版,正式版)
    中兴u980
    2008年清明节放假通知
    cyp740703 一个女人的自白
    黄唇鱼
    3月9日火箭vs黄蜂
    3月3日火箭vs掘金
    百度hi邀请码
  • 原文地址:https://www.cnblogs.com/lszwhb/p/3751249.html
Copyright © 2011-2022 走看看