根据字符串内容、最大宽度和字体计算行宽和高度
计算宽度
CGSize maxSize = CGSizeMake(MAXFLOAT,45); //设置字符串的宽高 MAXFLOAT为最大宽度极限值 45为最大高度。若设置为最大宽度是MAXFLOAT则只能计算宽度;当然若设置为有限的值,如:300,则可以计算高度。 CGSize size = [@"微信授权登录" boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size; CGFloat titleBtnWidth = size.width+shift;
计算宽高
NSDictionary *attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:14]}; //字体属性,设置字体的font CGFloat shift = 0.0; if(@available(iOS 11.0, *)) { shift = 0.1;//由于计算字符四舍五入问题,iOS11计算的宽度比实际稍低,所以要补偿回来 } CGSize maxSize = CGSizeMake(300,45); //设置字符串的宽高 300为最大宽度极限值 45为最大高度。 CGSize size = [@"微信授权登录" boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size; CGFloat titleBtnWidth = size.width+shift; CGFloat titleBtnHeight = size.height;