zoukankan      html  css  js  c++  java
  • IOS之按钮控件--Button全解析及使用 分类: ios技术 2015-01-17 17:09 169人阅读 评论(0) 收藏

    IOS开发中伴随我们始终的 最常用的几个空间之一 -- UIButton 按钮,对于button今天在此做一些浅析,并介绍下主流用法以及常见问题解决办法.

        首先是继承问题,UIButton继承于UIControl,而UIControl继承于UIView.     

    那么UIButton自然继承了UIView的属性.比如frame,layer等

    至于UIButton的创建

       

        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.backgroundColor = [UIColor clearColor];
        button.frame = CGRectMake(90, 90, 51, 24);
    //    // 内存: 不需要释放 因为是便利构造器
        [button setTitle:@"请点击" forState:UIControlStateNormal]; // 正常状态
        [button setTitle:@"点击中" forState:UIControlStateHighlighted]; // 高亮状态
        [button setTitle:@"已点击" forState:UIControlStateSelected];
        
        button.selected = NO;
        self.isSelected = 0;
        [button setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
        [button setTitleColor:[UIColor yellowColor] forState:UIControlStateSelected];
        // 按钮字体大小
        button.titleLabel.font = [UIFont systemFontOfSize:30];
        // 设置前景图片 (当button frame改变的时候 图片不变)
        [button setImage:[UIImage imageNamed:@"BtnOff@2x.png"] forState:UIControlStateNormal];
        
        // 禁止按钮按下颜色变深效果
        button.adjustsImageWhenHighlighted = NO;
        
        [button setImage:[UIImage imageNamed:@"IconAdd.png"] forState:UIControlStateHighlighted];
        // 设置背景图片 (当button frame改变的时候 图片不变)
        // 创建一个UIImage对象, 图片对象
        [button setBackgroundImage:[UIImage imageNamed:@"FrendAdd.png"] forState:UIControlStateNormal]; // 正常
        [button setBackgroundImage:[UIImage imageNamed:@"IconAdd.png"] forState:UIControlStateHighlighted]; // 高亮
        
        
        
        // button最核心的方法
        // 1.target 目标 就是button指定谁去执行方法
        // 2.action 方法 就是执行什么
        // 3.evunts 就是点击按钮时的状态
        // 4.UIControlEventTouchUpInside 当手离开触发
        [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
        [self.window addSubview:button];


    对于在button上加图片有2种方式

    第一种:setBackGroudImage:图片被拉伸

    第二种:setImage:  图片保持原大小

    注意设置图片时可能会出现渲染问题 此时的解决办法

    // 处理图片渲染问题
        UIImage *setImage = [UIImage imageNamed:@"setImage"];
        UIImage *newSetImage = [setImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    

    给button设置成圆形
    // 设置button的圆角半径,这样按钮就变成了园的
        button.layer.cornerRadius = 50;
        // 将button上的图片一样变成圆形
        [button.layer masksToBounds];
        // 添加边框
        button.layer.borderWidth = 3;
        // 边框颜色 注意要加.CGColor属性
        button.layer.borderColor = [UIColor orangeColor].CGColor;

    
    给button设置阴影
    // 设置阴影 横坐标向右 纵坐标向下 可负值
        button.layer.shadowOffset = CGSizeMake(1, 1);

    同时设置button上有文字和图片,并且同时实现点击效果

    //    在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets、titleEdgeInsets、imageEdgeInsets  
        [button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];//给button添加image  
    //设置image在button上的位置(上top,左left,下bottom,右right)这里可以写负值,对上写-10,那么image就象上移动10个像素  
        button.imageEdgeInsets = UIEdgeInsetsMake(5,13,21,button.titleLabel.bounds.size.width);

    
    button如果设置了图片的情况下 还有一个酷炫的点击效果 
    

    button.showsTouchWhenHighlighted = YES;


    以上适合于IOS初学者对于button的使用,button的一些常用主流实现功能以及常见的需求逻辑

      

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    CSRF 1 (转)
    学习笔记-静态SQL和动态SQL
    学习笔记-oracle-PL/SQL-动态游标
    spring框架介绍以及简单使用
    SpringMvc的常用注解
    tcp的三次握手个四次挥手
    大量面试题
    Comparable和Comparator接口
    JVM介绍
    JVM类加载
  • 原文地址:https://www.cnblogs.com/liuqixu/p/4684012.html
Copyright © 2011-2022 走看看