UI基础控件UIButton

一:UI基础 Button控件

1,简单说明:UIView和UIViewController间的关系

一个应用并不一定要有UIViewController,但是为了管理界面事件(比如按钮点击事件)一般我们在创建应用时要先创建控制器,控制器拥有一个UIView属性。

UIView用来展示数据、及用户输入数据、监听事件的触发(比如按钮的touchupinside事件)

而控制可以用来处理这些事件,赋值UIView的管理。

按钮可以展示文字和图片,也就是说按钮具有这些属性。

2,按钮的三种状态

normal (默认状态)    UIControlStateNormal

highlighted(高亮状态)UIControlStateHighted

disabled (BOOL类型)   UIControlStateDisabled 失去用户交互能力

#import "ViewController.h"
#define HEADBTNX  110
#define HEADBTNY  60
#define HEADBTNWH  100

typedef enum {
    KMOVETOP = 10,
    KMOVEBOTTOM,
    KMOVELEFT,
    KMOVERIGHT
}LLKOMVE;

#define KMOVEDEALT 50

@interface ViewController ()
@property (nonatomic, weak) UIButton *headBtn; // 头部按钮
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self loadBtnView];

//    UITextField *textFied = [[UITextField alloc] initWithFrame:CGRectMake(20, 20, 40, 20)];
//    textFied.backgroundColor = [UIColor purpleColor];
//    [self.view addSubview:textFied];
//    [textFied resignFirstResponder];
}

#pragma mark - 加载界面按钮视图控件
- (void)loadBtnView
{
    //--------------------1,创建头像按钮
    UIButton *headBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    headBtn.frame = CGRectMake(HEADBTNX, HEADBTNY, HEADBTNWH, HEADBTNWH);
    // 普通状态
    [headBtn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];
    [headBtn setTitle:@"点我啊" forState:UIControlStateNormal];
    [headBtn setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal];
    // 高亮状态
    [headBtn setBackgroundImage:[UIImage imageNamed:@"btn_02"] forState:UIControlStateHighlighted];
    [headBtn setTitle:@"摸我啊" forState:UIControlStateHighlighted];
    [headBtn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];

    self.headBtn = headBtn;
    [self.view addSubview:headBtn];

    // -------------------2,创建向上按钮
    UIButton *topBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    topBtn.frame = CGRectMake(60, 350, 30, 30);
    [topBtn setBackgroundImage:[UIImage imageNamed:@"top_normal"] forState:UIControlStateNormal];
    [topBtn setBackgroundImage:[UIImage imageNamed:@"top_highlighted"] forState:UIControlStateHighlighted];
    topBtn.tag = 10;
    // 添加按钮事件:
    [topBtn addTarget:self action:@selector(moveBtn:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:topBtn];

    // -------------------3,创建向下按钮
    UIButton *bottomBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    bottomBtn.frame = CGRectMake(60, 400, 30, 30);
    [bottomBtn setBackgroundImage:[UIImage imageNamed:@"bottom_normal"] forState:UIControlStateNormal];
    [bottomBtn setBackgroundImage:[UIImage imageNamed:@"bottom_highlighted"] forState:UIControlStateHighlighted];
    bottomBtn.tag = 11;
    [bottomBtn addTarget:self action:@selector(moveBtn:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:bottomBtn];

    // -------------------4,创建向left按钮
    UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    leftBtn.frame = CGRectMake(20, 375, 30, 30);
    [leftBtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
    [leftBtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
    leftBtn.tag = 12;
    [leftBtn addTarget:self action:@selector(moveBtn:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:leftBtn];

    // -------------------4,创建向right按钮
    UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    rightBtn.frame = CGRectMake(100, 375, 30, 30);
    [rightBtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
    [rightBtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
    rightBtn.tag = 13;
    [rightBtn addTarget:self action:@selector(moveBtn:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:rightBtn];

    //  -------------------5,创建plus到按钮
    UIButton *plusBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    plusBtn.frame = CGRectMake(180, 375, 30, 30);
    [plusBtn setBackgroundImage:[UIImage imageNamed:@"plus_normal"] forState:UIControlStateNormal];
    [plusBtn setBackgroundImage:[UIImage imageNamed:@"plus_highlighted"] forState:UIControlStateHighlighted];
    plusBtn.tag = 50;
    [plusBtn addTarget:self action:@selector(scale:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:plusBtn];

    //  -------------------6,创建minus到按钮
    UIButton *minusBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    minusBtn.frame = CGRectMake(220, 375, 30, 30);
    [minusBtn setBackgroundImage:[UIImage imageNamed:@"minus_normal"] forState:UIControlStateNormal];
    [minusBtn setBackgroundImage:[UIImage imageNamed:@"minus_highlighted"] forState:UIControlStateHighlighted];
    minusBtn.tag = 51;
    [minusBtn addTarget:self action:@selector(scale:) forControlEvents:UIControlEventTouchUpInside];
    [self.view  addSubview:minusBtn];

}

#pragma mark - 按钮缩小放大事件
- (void)scale:(UIButton *)btn
{
    CGRect  tempRect = self.headBtn.bounds;
    if (btn.tag == 50) {

        tempRect.size.width += 20;
        tempRect.size.height += 20;
    }else {
        tempRect.size.width -= 20;
        tempRect.size.height -= 20;
    }
    [UIView animateWithDuration:1.0 animations:^{

        self.headBtn.bounds = tempRect;
    }];
}

#pragma mark - 按钮移动事件
- (void)moveBtn:(UIButton *)btn
{
    CGPoint tempPoint = self.headBtn.center;
    switch (btn.tag) {
        case KMOVETOP:
            tempPoint.y -= KMOVEDEALT;
            break;
        case KMOVEBOTTOM:
            tempPoint.y += KMOVEDEALT;
            break;
        case KMOVELEFT:
            tempPoint.x -= KMOVEDEALT;
            break;
        case KMOVERIGHT:
            tempPoint.x += KMOVEDEALT;
            break;
    }

    [UIView animateWithDuration:1.0 animations:^{

        self.headBtn.center = tempPoint;
    }];
}

@end

补充:

1>退出键盘的两种方式

resignFirstResponder

当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘

self.view endEditing

只要调用这个方法的控件内部存在第一响应者,就能退出键盘

2> 修改对象的结构体成员

在OC中,不允许直接修改“对象”的“结构体属性”的“成员”,但是允许修改“对象”的“结构体属性”

修改结构体属性的成员方法如下:

(1)使用临时变量记录对象的结构体属性

(2) 修改临时变量的属性

(3)将临时变量重新设置给对象的结构体属性

3> frame & bounds & center

(1) frame可以修改对象的位置和尺寸

(2)bounds可以修改对象的尺寸 (以自己的左上角为0,0点)

(3) center可以修改对象的位置( 只有x,y属性值)

时间: 2024-10-27 12:43:39

UI基础控件UIButton的相关文章

0821基础控件(UIButton常用属性)

一.可以通过代码的方式创建UIButton 1.通用实例化对象方法: UIButton *button = [[UIButton alloc] initWithFrame:rect]; 2.快速实例化对象方法: UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 提示: 在OC开发中,实例化任何类型的非自定义对象,都请首先尝试一下是否存在快速定义方法.如果存在快速定义方法,就尽量不要使用init之类的方法实例

UI基础-UI基础控件(一)

一.UIView 1.简单说明 曾经有人这么说过,在iphone里你看到的,摸到的,都是UIView,所以UIView在iphone开发里具有非常重要的作用. 2.常见属性 1.frame 位置和尺寸(以父控件的左上角为原点(0, 0)) 2.center 中点 3.bounds 位置和尺寸(以自己的左上角为原点(0, 0)) 4.transform 形变属性(缩放, 旋转) 5.background 背景颜色 6.tag 标识(父控件可以根据这个标识找到对应的子控件,同一个父控件中的子控件不要

iOS UI基础控件之UIView 详解

UIView 简介 什么是UIView UIView是窗口上的一块区域,是iOS中所有控件的基类,我们在app中所有能看见的都是直接或间接继承与UIView的.我们把UIView叫做视图. UIView的作用 负责内部区域的内容渲染. 负责内部区域的触摸事件. 管理本身的所有子视图. 处理基本的动画. UIView创建与使用 创建UIView //通过frame创建View UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100,

iOS UI基础控件之UIImageView

一.UIImageView和UIImage UIImageView是iOS中用于显示图片的类,UIImage是用于存储图片数据的类:iOS中几乎所有看到的图片数据都存储在UIImage中,同时所要的图片都是用UIImageView来显示:UIImageView和UIImage关系如下图: 二. 创建UIImageView的两种方式 1.自己设置图片位置和尺寸 "` UIImageView *iv = [[UIImageView alloc] init]; //创建的图片, 没有默认的宽高 iv.

???01-UIKIT基础控件小结

iOS开发概述 cocos体系结构,一共有四层框架,要调用不同的功能,需要使用不同的框架.前期主要学习cocos touch层的UIKit框架 iOS和android的对比 ü   iOS是基于UINX,用C语言开发的,直接与系统底层交互,性能高 ü   andorid是基于Linux,用Java语言开发,基于虚拟机运行,性能差 UI基础控件 1.    UILabel——标签 作用:显示文字 属性: text属性:是label的文字 alignment属性:对齐方式 lines属性:如果为0,

[iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)

A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不可以再按 2.在屏幕中间弹出一个消息框,通知消息“xx已经被安装”,慢慢消失 3.消息框样式为圆角半透明 B.不使用代理模式,使用app空间组和主View之间的父子View关系 1.在主View中创建一个消息框 主View控制器:ViewController.m 1 // 创建下载成功消息框 2 CGFloat labelWid

iOS基础控件UINavigationController中的传值

iOS基础控件UINavigationController中的传值,代理传值,正向传值,反向传值 #import <UIKit/UIKit.h> //声明一个协议 @protocol SendValue<NSObject> //定义一个方法 - (void)sendBtnTitle:(NSString *)title; @end @interface FirstViewController : UIViewController // 定义代理 @property (nonatomi

Cocos2d-JS studio基础控件的使用

在studio里把几个基础控件往场景文件一拖,然后导出json格式的资源文件 逻辑代码如下: 1 var HelloWorldLayer = cc.Layer.extend({ 2 sprite:null, 3 value : 90, 4 // self : this, 5 ctor:function () { 6 ////////////////////////////// 7 // 1. super init first 8 this._super(); 9 10 /////////////

1-2基础控件

什么是UIImageView UIKit框架提供了非常多的UI控件,但并不是每一个都很常用,有些控件可能1年内都用不上,有些控件天天用,比如UIButton.UILabel.UIImageView.UITableView等等 UIImageView极其常用,功能比较专一:显示图片 什么是UILabel UILabel极其常用,功能比较专一:显示文字 什么是按钮 还有一个非常重要的UI控件---UIButton,俗称“按钮”,一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,