HMSegmentedControl源代码解析(11)
- UID
- 1066743
|
HMSegmentedControl源代码解析(11)
/**
计算title的cgsize
@param index 位置
@return 宽高
*/
- (CGSize)measureTitleAtIndexNSUInteger)index {
if (index >= self.sectionTitles.count) {
return CGSizeZero;
}
id title = self.sectionTitles[index];
CGSize size = CGSizeZero;
// 判断index是否和当前选中的index相等
BOOL selected = (index == self.selectedSegmentIndex) ? YES : NO;
if ([title isKindOfClass:[NSString class]] && !self.titleFormatter) {
// 当title是string类型 而且formatter不存在的时候
// 选中与非选中的时候返回一个富文本
NSDictionary *titleAttrs = selected ? [self resultingSelectedTitleTextAttributes] : [self resultingTitleTextAttributes];
size = [(NSString *)title sizeWithAttributes:titleAttrs];//计算文字经过富文本处理后的size
} else if ([title isKindOfClass:[NSString class]] && self.titleFormatter) {
// 当title是string类型 而且富文本存在的时候
size = [self.titleFormatter(self, title, index, selected) size];
} else if ([title isKindOfClass:[NSAttributedString class]]) {
size = [(NSAttributedString *)title size];
} else {
NSAssert(title == nil, @"Unexpected type of segment title: %@", [title class]);
size = CGSizeZero;
}
// 返回结果的最小矩形将源矩形值转换为整数。
return CGRectIntegral((CGRect){CGPointZero, size}).size;
} |
|
|
|
|
|