只使一个句子的一部分成为一个链接(添加选择器)

时间:2014-02-06 01:51:51

标签: ios objective-c

所以我试图实现以下内容。我有一个观点,有一个句子。只有部分句子链接到另一个视图。这就是它的样子:

I am a cat. Learn More

“了解更多”将是一个链接(蓝色),点击后会打开另一个视图。

目前我正在使用UILabel来写“我是一只猫”。我意识到添加选择器的最佳方法是使用按钮,因此“了解更多”应该是一个按钮?

有没有办法在不使用两个不同的UIComponents的情况下写出这句话?

如果没有,那么如何让UILabel和UIButton完全水平对齐呢?

以下是我在-layoutSubviews中的标签代码:

CGSize labelSize = [_label.text sizeWithFont:_label.font constrainedToSize:bounds.size lineBreakMode:_label.lineBreakMode];
  _label.frame = CGRectMake(0, 0, bounds.size.width - kMarginForText, labelSize.height);
  _label.center = CGPointMake(horizontalCenter, CGRectGetMaxY(_previousLabel.frame) + kDistanceBetweenPreviousAndCurrentLabel);

标签本身的代码。

    _label = [[UILabel alloc] initWithFrame:CGRectZero];
    _label.text = "I am a cat";
    _label.font = [UIFont systemFontOfSize:14];
    _label.textAlignment = NSTextAlignmentCenter;
    _label.numberOfLines = 0;
    _label.lineBreakMode = UILineBreakModeWordWrap;
    [self addSubview:_label];

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

要回答有关单个UIComponent的问题,可以将UILabel与UITapGestureRecognizer结合使用以创建预期效果。这样就可以让整个标签都适合......但是拥有更大的水龙头目标区域几乎绝不是坏事。

特别要使用NSAttributedString来设置标签文本(NSAttributedString change color at end of string):

UILabel *label = [[UILabel alloc] init];
//Use initwithframe or setup your constraints after initialization here
label.attributedText = (your nsattributed string here)

然后将点击识别器初始化到UILabel上,您可以执行以下操作:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(userDidTapLearnMore)];
label.userInteractionEnabled = YES;
[label addGestureRecognizer:tap];

答案 1 :(得分:0)

您要做的是通过基线对齐它们,您可以通过选择它们并选择编辑器>在Interface Builder中轻松完成这些操作。对齐>基线,如下图所示:

enter image description here