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的x\y永远为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

 

 

posted on 2014-05-25 15:40  ゴルツの惠斌纳閣下  阅读(369)  评论(0编辑  收藏  举报