标题:
HMSegmentedControl源代码解析(11)
[打印本页]
作者:
look_w
时间:
2019-2-19 17:40
标题:
HMSegmentedControl源代码解析(11)
/**
计算title的cgsize
@param index 位置
@return 宽高
*/
- (CGSize)measureTitleAtIndex
NSUInteger)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;
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0