Board logo

标题: HMSegmentedControl源代码解析(11) [打印本页]

作者: look_w    时间: 2019-2-19 17:40     标题: 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;
}




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0