zoukankan      html  css  js  c++  java
  • UIButton 解析

    IOS之按钮控件--Button全解析及使用 

    转载自:forget 

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

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

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

    至于UIButton的创建

       

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


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

    第一种:setBackGroudImage:图片被拉伸

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

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

    1. // 处理图片渲染问题  
    2.     UIImage *setImage = [UIImage imageNamed:@"setImage"];  
    3.     UIImage *newSetImage = [setImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];  
    给button设置成圆形
    1. // 设置button的圆角半径,这样按钮就变成了园的  
    2.     button.layer.cornerRadius = 50;  
    3.     // 将button上的图片一样变成圆形  
    4.     [button.layer masksToBounds];  
    5.     // 添加边框  
    6.     button.layer.borderWidth = 3;  
    7.     // 边框颜色 注意要加.CGColor属性  
    8.     button.layer.borderColor = [UIColor orangeColor].CGColor;  

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

    同时设置button上有文字和图片,并且同时实现点击效果
    1. //    在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets、titleEdgeInsets、imageEdgeInsets    
    2.     [button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];//给button添加image    
    1. //设置image在button上的位置(上top,左left,下bottom,右right)这里可以写负值,对上写-10,那么image就象上移动10个像素    
        button.imageEdgeInsets = UIEdgeInsetsMake(5,13,21,button.titleLabel.bounds.size.width);
    
    button如果设置了图片的情况下 还有一个酷炫的点击效果 
    
    
    
    1. button.showsTouchWhenHighlighted = YES;  


    以上适合于IOS初学者对于button的使用,button的一些常用主流实现功能以及常见的需求逻辑
  • 相关阅读:
    mysql锁 实战测试代码
    Memcache教程 Memcache零基础教程
    Moneybookers API支付方式开发 步骤
    dede判断当前文章
    Windows下的Memcache安装 linux下的Memcache安装
    Ecshop:后台添加新功能栏目以及管理权限设置
    解决echsop兼容jquery(transport.js的冲突)的问题
    PHP AJAX JSONP实现跨域请求使用实例
    shell基础 -- 基本语法
    神器之strace
  • 原文地址:https://www.cnblogs.com/Jenaral/p/5022390.html
Copyright © 2011-2022 走看看