我正在使用UIscrollView创建一个水平可滚动框。 使用API数据在滚动视图中显示,因此根据字符串长度我设置UIscrollView的内容大小。
当文本长于实际的盒子大小时,我使用点(椭圆)终止文本,当用户开始滚动时,我显示完整的字符串。
以下是创建水平可滚动框的代码:
let VarStrValue = rowArray[4] as! String
let stringCount = (VarStrValue).characters.count
let lengthOfString = CGFloat(stringCount)*7
let VarView:UIScrollView = UIScrollView()
let Varframe = CGRect(x:545, y:yTopMargin, width:455, height:45)
VarView.frame=Varframe
VarView.contentSize = CGSizeMake(lengthOfString, 0)
VarView.backgroundColor=UIColor(red:220/255, green: 221/255, blue: 224/255, alpha: 1.0)
VarView.delegate = self
let InfoVarValuelabel = UILabel(frame: CGRectMake(5, 0, 455, 40))
InfoVarValuelabel.textAlignment = NSTextAlignment.Left
InfoVarValuelabel.text = VarStrValue
InfoVarValuelabel.textColor = UIColor(red:82/255, green:87/255, blue:95/255, alpha:1.0)
InfoVarValuelabel.font = UIFont(name:"HelveticaNeue", size: 11.0)
InfoVarValuelabel.lineBreakMode = NSLineBreakMode.ByTruncatingTail
VarView.addSubview(InfoVarValuelabel)
self.MemValueVu.addSubview(VarView)
func scrollViewDidScroll(scrollView: UIScrollView) {
let subviews = scrollView.subviews
for v in subviews {
if v is UILabel {
let VarLabel = v as! UILabel
let VarString = VarLabel.text
let stringCount = (VarString)!.characters.count
let lengthOfString = CGFloat(stringCount)
print("scrollView.contentOffset.x \(scrollView.contentOffset.x)")
if(scrollView.contentOffset.x > (lengthOfString/7))
{
VarLabel.frame = CGRectMake(5, 0, 5000, 40)
VarLabel.text = VarString
VarLabel.lineBreakMode = NSLineBreakMode.ByTruncatingTail
}
else{
VarLabel.frame = CGRectMake(5, 0, 455, 40)
VarLabel.text = VarString
VarLabel.lineBreakMode = NSLineBreakMode.ByTruncatingTail
}
}
}
}
但这样做我遇到了问题: 1)即使字符串不长,也会在字符串中添加额外的滚动。
2)在某些情况下,即使我滚动了一半的内容,也没有显示完整的字符串或显示完整的字符串略有延迟。一旦用户开始滚动,它应该显示完整的字符串。
你能建议如何解决这个问题吗?