Skip to content

Commit

Permalink
修改CGButton文字计算问题
Browse files Browse the repository at this point in the history
  • Loading branch information
root338 committed Jul 2, 2019
1 parent 767f7fa commit 509dbcb
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions View/CustomView/Button/CGButton.m
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ - (CGSize)cg_calculateTitleSizeWithContentRect:(CGRect)contentRect imageSize:(CG
//当使用setTitle:forState:方法设置标题时,button不会立即刷新,当立即重新刷新button大小时,会出错
titleView = nil;
}
CGSize titleSize = [self calculateCurrentTitleAreaWithTitleLabel:titleView];
CGSize titleSize = [self calculateCurrentTitleAreaWithTitleLabel:titleView maxSize:tempLabelSize];

titleSize = CG_CGMinSize(tempLabelSize, titleSize);

Expand Down Expand Up @@ -375,7 +375,7 @@ - (CGSize)sizeThatFits:(CGSize)paramSize
}

//当使用setTitle:forState:方法设置标题时,button不会立即刷新,当立即重新刷新button大小时,会使用原标题进行计算出错
CGSize titleSize = [self calculateCurrentTitleAreaWithTitleLabel:self.titleLabel];
CGSize titleSize = [self calculateCurrentTitleAreaWithTitleLabel:self.titleLabel maxSize:CGSizeEqualToSize(paramSize, CGSizeZero) ? CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) : paramSize];
CGFloat space = self.didHandleSpace;

CGSize size;
Expand All @@ -397,10 +397,9 @@ - (CGSize)sizeThatFits:(CGSize)paramSize
return size;
}

- (CGSize)calculateCurrentTitleAreaWithTitleLabel:(UILabel *)titleLabel
- (CGSize)calculateCurrentTitleAreaWithTitleLabel:(UILabel *)titleLabel maxSize:(CGSize)maxSize;
{
CGSize titleSize = CGSizeZero;
CGSize compressedSize = CGSizeMake(FLT_MAX, FLT_MAX);

id currentTitleValue = self.getCurrentTitleContent;

Expand All @@ -416,17 +415,17 @@ - (CGSize)calculateCurrentTitleAreaWithTitleLabel:(UILabel *)titleLabel

if (titleLabel) {
[titleLabel setAttributedText:currentAttributedTitle];
titleSize = [titleLabel sizeThatFits:compressedSize];
titleSize = [titleLabel sizeThatFits:maxSize];
}else {
titleSize = [currentAttributedTitle size];
titleSize = [currentAttributedTitle boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size;
}
}else {

if (titleLabel) {
[titleLabel setText:currentTitle];
//iOS7 下如果不设置会导致按钮颜色变为默认的蓝色
[titleLabel setTextColor:self.currentTitleColor];
titleSize = [titleLabel sizeThatFits:compressedSize];
titleSize = [titleLabel sizeThatFits:maxSize];
}else {

if (_defaultAttributedDictIdentifier != titleLabel.font) {
Expand All @@ -445,7 +444,7 @@ - (CGSize)calculateCurrentTitleAreaWithTitleLabel:(UILabel *)titleLabel
_defaultAttributedDictIdentifier = titleFont;
}

titleSize = [currentTitle sizeWithAttributes:_defaultAttributedDict];
titleSize = [currentTitle boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:_defaultAttributedDict context:nil].size;
}
}

Expand Down

0 comments on commit 509dbcb

Please sign in to comment.