UIButton详解

来源:互联网 发布:福州网络棋牌公司 编辑:程序博客网 时间:2024/05/22 17:20

=======================基础功能=======================

// 使用此种初始化方法,title文字默认为白色,不推荐使用UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, 40, 30)];/* 初始化不同类型的UIButton(推荐) UIButtonTypeCustom -- 自定义,没有任何样式 UIButtonTypeSystem -- 系统样式,默认颜色为蓝色 UIButtonTypeDetailDisclosure -- 圈i UIButtonTypeInfoLight -- 圈i UIButtonTypeInfoDark -- 圈i UIButtonTypeContactAdd -- 圈+ UIButtonTypeRoundedRect = UIButtonTypeSystem*/UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];button.frame = CGRectMake(0, 100, 320, 30);/* 设置在不同状态下的title,titleColor,image,backgroundImage UIControlStateNormal -- 普通状态 UIControlStateHighlighted -- 高亮状态 UIControlStateDisabled -- 禁用状态,需要button.enabled = NO; UIControlStateSelected -- 选中状态,需要button.selected = YES; UIControlStateApplication -- 应用程序标志状态 UIControlStateReserved -- 预留状态*/// 设置文字[button setTitle:@"OK" forState:UIControlStateNormal];[button setTitle:@"KO" forState:UIControlStateHighlighted];// 设置文字颜色[button setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];// 设置字体大小button.titleLabel.font = [UIFont systemFontOfSize:17];// 设置图片,此种情况图片在前文字在后,图片不会被拉伸显示[button setImage:[UIImage imageNamed:@"beijing"] forState:UIControlStateNormal];// 设置背景图片,此种情况图片在下文字在上,将图片拉伸显示以适应整个UIButton[button setBackgroundImage:[UIImage imageNamed:@"beijing"] forState:UIControlStateNormal];// 设置背景颜色[button setBackgroundColor:[UIColor blackColor]];// 是否允许点击UIButton时变暗,默认为YESbutton.adjustsImageWhenHighlighted = NO;/* 设置不同事件下按钮方法的触发(同一个按钮不同触摸状态可以处理不同的事件,同一个按钮同一个触摸状态也可以处理不同的事件) UIControlEventTouchDown -- 按下 UIControlEventTouchDownRepeat -- 重复按下 UIControlEventTouchDragInside -- 在一定范围内拖动一直调用 UIControlEventTouchDragOutside -- 在一定范围外拖动一直调用 UIControlEventTouchDragEnter -- 在一定范围的外面进来时调用一次 UIControlEventTouchDragExit -- 在一定范围的里面出去时调用一次 UIControlEventTouchUpInside -- 点击后在范围内松手 UIControlEventTouchUpOutside -- 点击后在范围外松手 UIControlEventAllEvents -- 所有情况都调用*/[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];- (void)buttonClicked:(UIButton *)sender{NSLog(@"%s",__FUNCTION__);}

=======================进阶功能======================


// 设置内容对齐方式,并设置内容距离四周距离(上左下右)button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;button.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0);// 利用EdgeInsets属性将title和image放置在任意位置上,实现上图效果/* UIButton自带了UIImageView和UILabel两个控件,可以显示image和title,通过imageEdgeInsets和titleEdgeInsets属性可以将image和title放置在任意位置上  其实UIImageView和UILabel是相互联系的,在设置属性时需要将两者当做一个整体来考虑 实时计算图片宽高 CGSize imageSize = button.imageView.frame.size; 实时计算文字宽高 CGSize stringSize = [button.titleLabel.text sizeWithAttributes:@{NSFontAttributeName:button.titleLabel.font}];*/#define UI_SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width#define UI_BUTTON_HEIGH 49// 在默认情况下,图片在前文字在后显示,且中间没有间距(如button1)[button1 setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)];[button1 setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)];// 让图片和文字之间间距为10(如button2)[button2 setImageEdgeInsets:UIEdgeInsetsMake(0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2, 0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2+10)];[button2 setTitleEdgeInsets:UIEdgeInsetsMake(0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2+10, 0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2)];// 让图片距离右侧边缘10,让文字距离左侧边缘10(如button3)[button3 setImageEdgeInsets:UIEdgeInsetsMake(0, UI_SCREEN_WIDTH-imageSize.width-10, 0, 10-stringSize.width)];[button3 setTitleEdgeInsets:UIEdgeInsetsMake(0, 10-imageSize.width, 0, UI_SCREEN_WIDTH-stringSize.width-10)];// 让图片距离上侧边缘10,让文字距离下侧边缘10(如button4)[button4 setImageEdgeInsets:UIEdgeInsetsMake(10, 0, UI_BUTTON_HEIGH-10-imageSize.height, 0)];[button4 setTitleEdgeInsets:UIEdgeInsetsMake(UI_BUTTON_HEIGH-10-stringSize.height, 0, 10, 0)];// 让图片和文字都居中显示,且图片距离上侧边缘5,文字距离下侧边缘5(如button5)[button5 setImageEdgeInsets:UIEdgeInsetsMake(5, (UI_SCREEN_WIDTH-imageSize.width)/2, UI_BUTTON_HEIGH-5-imageSize.height, (UI_SCREEN_WIDTH-imageSize.width)/2-stringSize.width)];[button5 setTitleEdgeInsets:UIEdgeInsetsMake(UI_BUTTON_HEIGH-5-stringSize.height, (UI_SCREEN_WIDTH-stringSize.width)/2-imageSize.width, 5, (UI_SCREEN_WIDTH-stringSize.width)/2)];
0 0
原创粉丝点击