美文网首页
HMSegmentControl (iOS10)

HMSegmentControl (iOS10)

作者: 易爆物品 | 来源:发表于2016-08-30 11:18 被阅读0次

    在iOS10,Xcode8beta上运行HMSegmentControl时会出现,title不显示的情况,如图:

    在源码中做如下修改即可正常显示,添加方法

    - (UIFont *)attributedFontAtIndex:(NSInteger)index

    {

    BOOL selected = (index == self.selectedSegmentIndex) ? YES : NO;

    NSDictionary *titleAttrs = selected ? [self resultingSelectedTitleTextAttributes] : [self resultingTitleTextAttributes];

    UIFont *font = [titleAttrs objectForKey:NSFontAttributeName];

    if (!font) {

    font = [UIFont systemFontOfSize:18];

    }

    return font;

    }

    - (UIColor *)attributedColorAtIndex:(NSInteger)index

    {

    BOOL selected = (index == self.selectedSegmentIndex) ? YES : NO;

    NSDictionary *titleAttrs = selected ? [self resultingSelectedTitleTextAttributes] : [self resultingTitleTextAttributes];

    UIColor *color = [titleAttrs objectForKey:NSForegroundColorAttributeName];

    if (!color) {

    color = [UIColor blackColor];

    }

    return color;

    }

    在drawRect:方法中:

    CATextLayer *titleLayer = [CATextLayer layer];

    titleLayer.frame = rect;

    titleLayer.alignmentMode = kCAAlignmentCenter;

    titleLayer.truncationMode = kCATruncationEnd;

    titleLayer.string = [self attributedTitleAtIndex:idx];

    titleLayer.contentsScale = [[UIScreen mainScreen] scale];

    修改成:

     UIFont *font = [self attributedFontAtIndex:idx];

     UIColor *color = [self attributedColorAtIndex:idx];

    CATextLayer *titleLayer = [[CATextLayer alloc] init];

    titleLayer.frame = rect;

    titleLayer.alignmentMode = kCAAlignmentCenter;

    titleLayer.truncationMode = kCATruncationEnd;

    titleLayer.string = [self attributedTitleAtIndex:idx];

     titleLayer.fontSize = font.pointSize;

     titleLayer.font = (__bridge CFTypeRef _Nullable)(font.fontName);

    titleLayer.string = (NSString *)titleString;

     titleLayer.foregroundColor = color.CGColor;

    titleLayer.contentsScale = [[UIScreen mainScreen] scale];

    在修改过程中并未对源码或者多余部分进行删除,修改 只是简单让title显示出来,这里只简单介绍一种思路。

    相关文章

      网友评论

          本文标题:HMSegmentControl (iOS10)

          本文链接:https://www.haomeiwen.com/subject/qjmfettx.html