zoukankan      html  css  js  c++  java
  • iOS Button的故事

    UIButton 继承与UIControl (UIControl继承与UIView)

    1.基本语法

      1 #import "ViewController.h"
      2 #define WIDTH  self.view.bounds.size.width
      3 @interface ViewController ()
      4 {
      5     NSInteger m_counter;
      6 }
      7 @end
      8 
      9 @implementation ViewController
     10 
     11 - (void)viewDidLoad
     12 {
     13     [super viewDidLoad];
     14     
     15     m_counter = 0;
     16     
     17     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
     18  
     19     //这里需要说明一下  button.buttonType 是  readonly  不允许赋值!!!!
     20     
     21     
     22     
     23     
     24     button.frame =  CGRectMake(20, 40, WIDTH - 40, 40);
     25     
     26     
     27     //设置button是否可以被点击  - default is YES.
     28     button.enabled = YES;
     29     
     30     //设置button是否可以和用户之间交互  - default is YES.
     31     button.userInteractionEnabled = YES;
     32     
     33     
     34     //正常状态 -- 设置button的title
     35     [button setTitle:@"你确定要点击,别后悔!!!" forState:UIControlStateNormal];
     36     //高亮状态
     37     [button setTitle:@"你确定要点击,别后悔!!!" forState:UIControlStateHighlighted];
     38     //不可点击状态
     39     [button setTitle:@"你确定要点击,别后悔!!!" forState:UIControlStateDisabled];
     40     
     41     
     42     
     43     
     44     button.backgroundColor = [UIColor redColor];
     45     
     46     //UIControlStateNormal ---  UIControlStateHighlighted  ----  UIControlStateDisabled
     47     //不同状态下都可设置
     48     [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
     49     
     50     
     51     //UIControlStateNormal ---  UIControlStateHighlighted  ----  UIControlStateDisabled
     52     //不同状态下都可设置-----注:设置了背景图,那么背景颜色将不会生效!!!
     53     [button setBackgroundImage:[UIImage imageNamed:@"background"] forState:UIControlStateNormal];
     54     
     55     
     56     /*
     57      
     58      上面设设置背景图,现在是直接把button做成一张图来显示!!! 如果为button设置标题就不会显示
     59     //UIControlStateNormal ---  UIControlStateHighlighted  ----  UIControlStateDisabled
     60     //不同状态下都可设置
     61     [button setImage:[UIImage imageNamed:@"background"] forState:UIControlStateNormal];
     62      
     63     */
     64     
     65     
     66     
     67     //设置button在点击的时候时候会高亮一下儿 ---- default is NO
     68     [button setShowsTouchWhenHighlighted:YES];
     69     
     70     
     71     //设置按钮内部图片间距和标题间距
     72     UIEdgeInsets insets; // 设置按钮内部图片间距
     73     insets.top = insets.bottom = insets.right = insets.left = 10;
     74     button.contentEdgeInsets = insets;
     75     button.titleEdgeInsets = insets; // 标题间距
     76     
     77     
     78     //添加button点击事件
     79     [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
     80     /*
     81     //移除button事件----基本上不用!!!!
     82     [button removeTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
     83     */
     84     [self.view addSubview:button];
     85     
     86     
     87     
     88     //下面说一下button不常用的属性
     89     
     90     //怎么实现让button中的文字左对齐  或者右对齐
     91     button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
     92     //设置button的标题离边界的距离
     93     button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
     94     
     95     
     96     
     97     /*
     98      
     99      另外在说一点其他的工作上遇到的问题, 当启动一个定时器让button的标题不断改变的时候.(比如说在获取短信验证码的时候,系统会在点击一次后出现60s的倒计时每隔1s 改变一次button的标题)
    100      */
    101     
    102     
    103     UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
    104     button1.frame = CGRectMake(30, 100, WIDTH - 60, 40);
    105     button1.tag = 1000;
    106     button1.backgroundColor = [UIColor redColor];
    107     [button1 setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    108     [button1 setTitle:@"点击开始倒计时" forState:UIControlStateNormal];
    109     [button1 addTarget:self action:@selector(button1Click:) forControlEvents:UIControlEventTouchUpInside];
    110     [self.view addSubview:button1];
    111 }
    112 -(void)button1Click:(UIButton *)sender
    113 {
    114      [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
    115 }
    116 
    117 -(void)timerFired:(NSTimer *)sender
    118 {
    119     UIButton *button = [self.view viewWithTag:1000];
    120     if (++m_counter > 60)
    121     {
    122         [sender invalidate];
    123         [button setTitle:@"倒计时结束,点击重新开始" forState:UIControlStateNormal];
    124         m_counter = 0;
    125         button.enabled = YES;
    126         return;
    127     }
    128     button.enabled = NO;
    129     [button setTitle:[NSString stringWithFormat:@"%ld",60 - m_counter] forState:UIControlStateNormal];
    130 }
    131 
    132 
    133 -(void)buttonClick : (UIButton * )sender
    134 {
    135     NSLog(@"叫你不要点还要点,算你有种!!!!!");
    136 }


  • 相关阅读:
    es date_histogram强制补零
    macos下默认的调试工具是lldb
    test
    mybaity 代码自动生成器
    初始化的问题
    SQLServer常用语句
    PowerShell Install-Module 离线安装 .nupkg包
    .NET Core语句记录
    system design(how to design tweet)
    软件-开源
  • 原文地址:https://www.cnblogs.com/Mgs1991/p/5131973.html
Copyright © 2011-2022 走看看