zoukankan      html  css  js  c++  java
  • IOS开发之按钮控件Button详解

    reference:http://mxcvns.lofter.com/post/1d23b1a3_685d59d

    首先是继承问题,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;

      

  • 相关阅读:
    SQL SERVER中一些常见性能问题的总结
    【BZOJ2554】Color 概率神题
    【BZOJ1818】[Cqoi2010]内部白点 扫描线+树状数组
    【BZOJ1879】[Sdoi2009]Bill的挑战 状压DP
    【BZOJ2668】[cqoi2012]交换棋子 费用流
    【BZOJ4372】烁烁的游戏 动态树分治+线段树
    【BZOJ3470】Freda’s Walk 概率与期望
    【BZOJ2087】[Poi2010]Sheep 几何+DP
    【BZOJ4428】[Nwerc2015]Debugging调试 记忆化搜索+分块
    【BZOJ2137】submultiple 高斯消元求伯努利数
  • 原文地址:https://www.cnblogs.com/lucky-star-star/p/5630738.html
Copyright © 2011-2022 走看看