【深入浅出IOS开发】彩票-重写按钮控件
来源:互联网 发布:机械设计制图软件 编辑:程序博客网 时间:2024/05/20 05:29
①创建子类继承UIButton,然后关联相应的UIButton控件
②重写initWithCoder 和 initWithFrame里面设置同样的代码,确保不管是通过代码还是xib,storyborad来创建Button都会执行
③重写titleRectForContentRect和imgeRectForContentRect
#import "MJTitleButton.h"#import <Availability.h>@interface MJTitleButton()@property (nonatomic, strong) UIFont *titleFont;@end// initWithCoder ---> awakeFromNib@implementation MJTitleButton/** * 从文件中解析一个对象的时候就会调用这个方法 */- (id)initWithCoder:(NSCoder *)decoder{ if (self = [super initWithCoder:decoder]) { [self setup]; } return self;}/** * 通过代码创建控件的时候就会调用 */- (id)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { [self setup]; } return self;}/** * 初始化 */- (void)setup{ self.titleFont = [UIFont systemFontOfSize:14]; self.titleLabel.font = self.titleFont; // 图标居中 self.imageView.contentMode = UIViewContentModeCenter;}/** * 控制器内部label的frame * contentRect : 按钮自己的边框 */- (CGRect)titleRectForContentRect:(CGRect)contentRect{ CGFloat titleX = 0; CGFloat titleY = 0; NSDictionary *attrs = @{NSFontAttributeName : self.titleFont}; CGFloat titleW; if (iOS7) { // 只有Xcode5才会编译这段代码#ifdef __IPHONE_7_0 titleW = [self.currentTitle boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size.width;#else titleW = [self.currentTitle sizeWithFont:self.titleFont].width;#endif } else { titleW = [self.currentTitle sizeWithFont:self.titleFont].width; } CGFloat titleH = contentRect.size.height; return CGRectMake(titleX, titleY, titleW, titleH);}/** * 控制器内部imageView的frame */- (CGRect)imageRectForContentRect:(CGRect)contentRect{ CGFloat imageW = 30; CGFloat imageX = contentRect.size.width - imageW; CGFloat imageY = 0; CGFloat imageH = contentRect.size.height; return CGRectMake(imageX, imageY, imageW, imageH);}@end
在Button所在的控制器中,连线实现淡季事件
- (IBAction)titleClick:(UIButton *)sender { // 1.按钮旋转 [UIView animateWithDuration:0.25 animations:^{ sender.imageView.transform = CGAffineTransformMakeRotation(-M_PI); }]; // 2.添加uiview UIView *temp = [[UIView alloc] init]; temp.frame = CGRectMake(10, 10, 100, 30); temp.backgroundColor = [UIColor redColor]; [self.view addSubview:temp];}
0 0
- 【深入浅出IOS开发】彩票-重写按钮控件
- 【深入浅出IOS开发】彩票-重写按钮控件
- 【深入浅出IOS开发】重写按钮控件2
- 【深入浅出IOS开发】重写按钮控件2
- 【深入浅出IOS开发】彩票-按钮中图片的拉伸
- 【深入浅出IOS开发】彩票-按钮中图片的拉伸
- 【深入浅出IOS开发】彩票-NavigationController
- 【深入浅出IOS开发】彩票-NavigationController
- 【深入浅出IOS开发】1.面搭建-彩票
- 【深入浅出IOS开发】彩票-状态栏的设置
- 【深入浅出IOS开发】1.面搭建-彩票
- 【深入浅出IOS开发】彩票-状态栏的设置
- 【深入浅出IOS开发】彩票-代理实现子Controller的切换
- 【深入浅出IOS开发】彩票-去除图标的玻璃质感效果
- 【深入浅出IOS开发】彩票-代理实现子Controller的切换
- 【深入浅出IOS开发】彩票-去除图标的玻璃质感效果
- IOS开发:按钮控件
- UIButton按钮控件-iOS开发
- poj 1414
- 光荣之路测试教程
- 纵综宗纂祝仔酌纵姿紫祖奏坐姿族灼转孜
- C++笔记 The IO Library
- 纂组纵转茁钻坐资诅啄谞酌捉赚注纂奏篆
- 【深入浅出IOS开发】彩票-重写按钮控件
- 1038. Recover the Smallest Number
- Unity3D学习之(Q侠传SVN的应用)
- 综滓缀撞组最追左赚卒追拽捉兹足锥赘孜
- 组啄谞抓仔字子专浊专走抓总赘钻住专卓
- 籽缀妆仔座拽综最爪罪资拽阻醉篆酌驻纂
- 纂总砖座座着滓钻篆状孜注子篆着渍谆最
- 如何使 类的成员函数作为回调函数
- 日期模块的实现