iOS 自定义按钮的标题宽度、高度

在设置高度的时候IOS6、IOS7的运行时版本、编译时版本兼容。

重写titleRectForContentRect方法

/**

 warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available.

 self.titleLabel.text  不能使用,它内部会调用 titleRectForContentRect:造成死循环。

 采用 self.currentTitle

 */
- (CGRect)titleRectForContentRect:(CGRect)contentRect{
    CGFloat titleX = 0;
    CGFloat titleY = 0;
    CGFloat titleHeight = contentRect.size.height;
    CGFloat titleWeight= 0;
    UIFont *font = [UIFont systemFontOfSize:15.0];
      if (IOS7) {//1.判断运行时的版本

        //2.编译环境的判断#define __IPHONE_7_0     70000  --#import <Availability.h>
#ifdef __IPHONE_7_0
        //计算按钮宽度
        NSDictionary *dict =@{NSFontAttributeName:font};
        titleWeight = [self.currentTitle boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size.width;

#else
        titleWeight = [self.currentTitle sizeWithFont:font].width;
#endif
    }else{
        titleWeight = [self.currentTitle sizeWithFont:font].width;
    }
    return CGRectMake(titleX, titleY, titleWeight, titleHeight);
}

 

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!
技术狗 » iOS 自定义按钮的标题宽度、高度