我有一个很长的字符串:
"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 }))
}
答案 0 :(得分:0)
表格视图中的Scrollview是个坏主意。相反,您可以启用automaticDimension和估计的行高,tableView将自动管理单元格高度。
self.tableView.estimatedRowHeight = 44
self.tableView.allowsMultipleSelection = true
因此,根据内容,每个单元格将管理自己的高度。
希望这会有所帮助!
答案 1 :(得分:0)
您必须创建一个自定义tableview单元格,该单元格具有处理UILabel滚动的自定义滚动视图。您需要指定文本并测量宽度。如果它比包含视图宽,则在其右侧添加第二个重复标签。然后,您需要通过标签的宽度将滚动视图设置为左侧的动画。完成后,跳回到偏移0,0并再次设置动画。
答案 2 :(得分:0)
通常,为了产生特殊效果,需要定制UILabel。为了让我的生活更轻松,我总是会尝试搜索是否已经有一个工作库供我使用。
简单的Google搜索带给我MarqueeLabel,希望它有所帮助!