ios - 具有多个按钮和字体的多行 UILabel

标签 ios swift uitableview autolayout uilabel

我正在为一些事件提要对象制作一个 UITableViewCell,让您知道它们将类似于 Facebook 帖子,其中您在一个帖子中有多个链接。

在我的例子中,每篇文章将有两个指向其他 UIViewController 的链接和一个连接两者并解释连接的普通 UILabel(例如“< strong>XY 的帖子发表了评论"),您可以同时点击 X 和 Y 以执行某些操作.

就像现在一样,我刚刚制作了 3 个单独的 UILabel。问题是我不确定如何处理多行中太长的名称。

意思是如果例如而不是 X,帖子是“XXXXXXXXXXXXXXXXX 评论了 Y 的帖子”,那么“Y 的帖子发表了评论”将需要换行。

现在我只是将 3 个 UILabel 与约束链接在一起,这样它们就可以彼此相邻,但是当它们太长时就不起作用了。

如果您对我如何处理这个问题有任何想法,请告诉我,我们将不胜感激。

提前致谢。

最佳答案

标签太多,我想你可以使用这个扩展:

extension NSMutableAttributedString {

   public func setAsLink(textToFind:String, linkURL:String) -> Bool {

       let foundRange = self.mutableString.rangeOfString(textToFind)
       if foundRange.location != NSNotFound {
           self.addAttribute(NSLinkAttributeName, value: linkURL, range: foundRange)
           return true
       }
       return false
   }
}

然后你可以这样做:

let labelFont = UIFont(name: "HelveticaNeue-Bold", size: 18)
let attributes :[String:AnyObject] = [NSFontAttributeName : labelFont!]
let attrString = NSAttributedString(string:"foo www.google.com", attributes: attributes)
let urlPath: String = "http://www.google.com"
let url: NSURL = NSURL(string: urlPath)!
attrString.setAsLink("www.google.com", linkURL:url) 
myLabel.attributedText = attrString

更新:(在您发表评论之后)

如果您需要拦截urllink,您可以将标签转换为textView(UITextView),将其设置为委托(delegate)并处理shouldInteractWithURL方法:

class ViewController: UIViewController, UITextViewDelegate { 
... // on your code do:
    myTextView.delegate = self
...
func textView(textView: UITextView!, shouldInteractWithURL URL: NSURL!, inRange characterRange: NSRange) -> Bool {

   if URL.scheme == "http://www.google.com" {
      //do whatever you want
      launchMyMethodForThisUrl()
   }

}

关于ios - 具有多个按钮和字体的多行 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36953259/

相关文章:

ios - iPad 中的 .ipa 文件为空白但在 iPhone 中有效

Swift UI 导出 Canvas 内容

swift - 我需要在 SpriteKit 游戏中实现计时器吗?

ios - iOS 中使用 Twitter API 的简单 GET 请求

ios - Facebook iOS 邀请未到达被邀请人

ios - 在 iOS 设备上运行 clubbed swift & react-native 项目时出错

ios - 如何在 UITableViewCell 中为 UIButton 设置 Action

cocoa-touch - 使用通知中心重新加载 UITableView 可以吗?

iphone - 自定义 UITableViewCell 出错

Unity 应用程序的 iOS 崩溃