码迷,mamicode.com
首页 > 微信 > 详细

iOS微信朋友圈 评论点击姓名功能

时间:2014-07-23 14:51:56      阅读:380      评论:0      收藏:0      [点我收藏+]

标签:style   http   使用   os   width   io   

可以使用PPLabel来实现这个功能,下载代码https://github.com/petrpavlik/PPLabel。

这个demo有两个小bug:

1、如果最后一个单词后面没有空格字符,那么不能点击。

修改办法:在ViewController中,有一个代理方法:

- (void)highlightWordContainingCharacterAtIndex:(CFIndex)charIndex 

将这个代理方法中的代码:

 if (end.location == NSNotFound) {

        end.location = string.length-1; //last word was selected

    }

修改成:

 if (end.location == NSNotFound) {

        end.location = string.length//last word was selected

    }

 

2、这个label中的最后一行无法点击

修改办法:

在PPlabel.m中,有以下代码:

- (CGRect)textRect {

    CGRect textRect = [self textRectForBounds:self.bounds limitedToNumberOfLines:0];

    textRect.origin.y = (self.bounds.size.height - textRect.size.height)/2;

    if (self.textAlignment == NSTextAlignmentCenter) {

        textRect.origin.x = (self.bounds.size.width - textRect.size.width)/2;

    }

    if (self.textAlignment == NSTextAlignmentRight) {

        textRect.origin.x = self.bounds.size.width - textRect.size.width;

    }

    

    return textRect;

}

将其修改为:

- (CGRect)textRect {

    CGRect textRect = [self textRectForBounds:self.bounds limitedToNumberOfLines:0];

    textRect.origin.y = (self.bounds.size.height - textRect.size.height)/2;

    textRect.size.height += 100;

    if (self.textAlignment == NSTextAlignmentCenter) {

        textRect.origin.x = (self.bounds.size.width - textRect.size.width)/2;

    }

    if (self.textAlignment == NSTextAlignmentRight) {

        textRect.origin.x = self.bounds.size.width - textRect.size.width;

    }

    

    return textRect;

}

为什么要+100?

因为用CoreText在计算点击的字符位置时,textRect大小造成最后一行无法统计,将高度增加一部分,可以避免在计算点击的字符位置时造成最后一行遗漏。

iOS微信朋友圈 评论点击姓名功能,布布扣,bubuko.com

iOS微信朋友圈 评论点击姓名功能

标签:style   http   使用   os   width   io   

原文地址:http://www.cnblogs.com/zengyanzhi/p/3862595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!