在UITableViewCell中自动滚动动画文本

时间:2017-03-22 21:49:27

标签: ios swift uitableview

我有一个很长的字符串:

"A very long string"

将无法在UITableView中完整显示,即它会被截断为:

"A very long s..."

是否可以让UITableViewCell中的此文本自动水平无限滚动,以便循环播放?也许这可以使用属性字符串来实现?

    let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath)
    cell.textLabel?.text = "A very long string"
    cell.textLabel?.textAlignment = .center

提前感谢您对此的任何帮助!

编辑(我尝试提出解决方案)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath)

    let frame = CGRect(x: 0.0, y: 0.0, width: cell.bounds.width * 2.0, height: cell.bounds.height)

    let scrollView = UIScrollView(frame: frame)
    cell.addSubview(scrollView)

    let label = UILabel(frame: scrollView.bounds)
    scrollView.addSubview(label)
    label.text = "some very long text that doesn't quite fit"
    label.textAlignment = .center

    let newFrame = CGRect(x: label.frame.width, y: 0, width: label.frame.width, height: scrollView.frame.height)
    UIView.animate(withDuration: 1.0, delay: 0.0, options: [.repeat, .autoreverse], animations:( { void in
        scrollView.scrollRectToVisible(newFrame, animated: true)}),
        completion: ({ completed in }))
}

3 个答案:

答案 0 :(得分:0)

表格视图中的Scrollview是个坏主意。相反,您可以启用automaticDimension和估计的行高,tableView将自动管理单元格高度。

self.tableView.estimatedRowHeight = 44
self.tableView.allowsMultipleSelection = true

因此,根据内容,每个单元格将管理自己的高度。

希望这会有所帮助!

答案 1 :(得分:0)

您必须创建一个自定义tableview单元格,该单元格具有处理UILabel滚动的自定义滚动视图。您需要指定文本并测量宽度。如果它比包含视图宽,则在其右侧添加第二个重复标签。然后,您需要通过标签的宽度将滚动视图设置为左侧的动画。完成后,跳回到偏移0,0并再次设置动画。

答案 2 :(得分:0)

通常,为了产生特殊效果,需要定制UILabel。为了让我的生活更轻松,我总是会尝试搜索是否已经有一个工作库供我使用。

简单的Google搜索带给我MarqueeLabel,希望它有所帮助!