swift - 如何在 UILabel 文本中混入 UIButton?

标签 swift uibutton swift2 uilabel

我正在尝试让通知表单元格具有“User1 与 User2 成为 friend ”的标签,其中 User1 和 User2 是打开所述用户的个人资料 View 的按钮。当文本环绕时会出现问题。示例:

                WANT                              DON'T WANT
|                                      |  |                           |
| "John Doe" became friends with "Jane |  | "John" friends with "Jane"|
| Smith"                               |  |                     "Doe "|
 ^notice how to wraps around               wraps within btn bounds^
  all the way back to left margin                

我非常想要这个 HTML 的 Swift 等价物:<a href=..>Button 1</a> some plain text <a href=..>Button 2</a> .有什么办法可以做到这一点吗?

最佳答案

您可以使用 UITextView 实现此目的。 UITextView 检测 url,您可以像这样使用该功能。

您可以为这些可点击值添加虚拟 url 值,然后这些值在 uitextview 中变为可点击。这是示例代码:-

import UIKit

class ViewController: UIViewController, UITextViewDelegate {

  @IBOutlet weak var label: UILabel!
  @IBOutlet weak var textView: UITextView!

  let user01 = "http://www.dummyLinks";
  let user02 = "http://www.dummy.com/privacy";

  override func viewDidLoad() {
      super.viewDidLoad()
      self.textView.delegate = self
      let labelText = "Chathuranga Silva is now Freind with Jason"
      let string = NSMutableAttributedString(string: labelText)
      var textRange = string.mutableString.rangeOfString("Chathuranga Silva")
      string.addAttribute(NSLinkAttributeName, value: user01, range: textRange)
      textRange = string.mutableString.rangeOfString("Jason")
      string.addAttribute(NSLinkAttributeName, value: user02, range: textRange)
      textView.attributedText = string
      // Do any additional setup after loading the view, typically from a nib.
  }

  func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
      if (URL.absoluteString == user01) {
          print("Selected user01")
      } else if (URL.absoluteString == user02) {
          print("Selected user02")
      }
      return false
  }

  override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
      // Dispose of any resources that can be recreated.
  }
}

enter image description here

关于swift - 如何在 UILabel 文本中混入 UIButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39381201/

相关文章:

ios - 如何创建一个圆形的 UIImageView

ios - swift ios 检查本地通知是否被解除

ios - 当你有多个按钮时,如何在 UITableView 中保持 UIButton 状态被选中?

ios - CollectionView 滚动时更改单元格背景图像

swift - 使用参数集外的完成 block 实现 Swift 函数

xcode - 导入 MobileCoreServices 后 Xcode 中没有任何建议

ios - Swift 自定义 NSMutableArray 排序

swift - 无法从 UITableView 中删除单元格,只能删除所述单元格中的数据

ios - 单击其他按钮顶部的“禁用”按钮会触发另一个按钮的单击事件

ios - 如何检查 UIButton 上文本的颜色?