在tableview UILabel中自动检测链接

时间:2011-04-07 11:34:27

标签: iphone objective-c ios hyperlink uilabel

我在这个主题上发现了很多东西。我只是想在我的标签中出现的链接被自动检测为链接和超链接。我看过三个20项目TTtwitter,但这看起来很复杂,我不知道从哪里开始整合它。

有谁知道这是否可以通过简单的方式完成,还是有人可以尝试解释一下?

Thnx提前!

2 个答案:

答案 0 :(得分:0)

建议您使用UIWebView

使用UIWebView的以下属性来检测链接..

@property(nonatomic) UIDataDetectorTypes dataDetectorTypes

答案 1 :(得分:0)

您无法在UILabel或UIButtons中为文本加下划线。这是我在类似情况下所做的事情。

我想在视图中加下划线的文本看起来像一个链接,但我不想要UIWebView的功能,我需要标准的目标/动作UIControl功能。我所做的只有你想要显示的单行文本并且看起来像一个链接才有效。像使用标准UIButton一样使用它。您应该使用type = UIButtonTypeCustom。

创建

我创建了一个UIButton的子类,它通过覆盖drawRect来支持单行文本的下划线。我在子类中添加了BOOL _titleLabelUnderlined iVar。

XButton.m

- (void)drawRect:(CGRect)rect
{
   // just in case...
   [super drawRect];

   if (_titleLabelUnderlined) {
        CGContextRef context = UIGraphicsGetCurrentContext();

        // determine the size of the titleLabel text based on the font
        CGSize textSize =[self.titleLabel.text sizeWithFont:self.titleLabel.font 
                                                   forWidth:self.bounds.size.width
                                              lineBreakMode:UILineBreakModeTailTruncation];

        // set the underline color
        CGContextSetStrokeColorWithColor(context, self.currentTitleColor.CGColor);

        // line width
        CGContextSetLineWidth(context, 1.0f);

        // calc the start and end points for the line
        CGFloat minX = self.titleLabel.center.x - textSize.width/2.0f;
        CGFloat maxX = self.titleLabel.center.x + textSize.width/2.0f;

        // start the line
        CGContextMoveToPoint(context, minX, CGRectGetMinY(self.titleLabel.frame) + CGRectGetHeight(self.titleLabel.frame) + 1.0f);

        // draw the line to the end point
        CGContextAddLineToPoint(context, maxX, CGRectGetMinY(self.titleLabel.frame) + CGRectGetHeight(self.titleLabel.frame) + 1.0f);

        // commit the drawing
        CGContextStrokePath(context);
    }
}