您好,我只想在whatsapp中滚动UITableView时显示日期 Today 标签。 Whatsapp Video Here。
此外,如果我们开始滚动昨天的聊天,我们可以在whatsapp中看到昨天的标签,并且在停止滚动View时会自动隐藏。如果可能的话,可以在表格视图的各个部分进行/不进行。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
一些建议:
观察UITableView滚动开始和停止
也许您可以通过工具UIScrollViewDelegate观察tableview滚动。有两种方法可以告诉委托滚动视图有关开始/停止滚动内容。
scrollViewWillBeginDragging
,scrollViewWillEndDragging
不通过tableview部分显示标签
只需将您的今天标签添加为UITableView的子视图
答案 1 :(得分:0)
我认为,您正在寻找这样的东西
要实现这一目标
let uiScreen = UIScreen.main.bounds.size
let whatsAppTableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
//self.customization()
whatsAppTableView.dataSource = self
whatsAppTableView.delegate = self
whatsAppTableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
let backgroundImage = UIImage(named: "w") //w = whatsapp background Image
let imageView = UIImageView(image: backgroundImage)
self.whatsAppTableView.backgroundView = imageView
whatsAppTableView.frame = CGRect(x:0, y:0, width:uiScreen.width, height: uiScreen.height)
whatsAppTableView.separatorStyle = .none
view.addSubview(whatsAppTableView)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return 3
}
if section == 1 {
return 3
}
if section == 2 {
return 5
}
return 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.selectionStyle = .none
cell.backgroundColor = UIColor.clear
return cell
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerLabelView = UILabel(frame: CGRect(x: 0, y: 0, width: whatsAppTableView.frame.size.width, height: 40))
let headerLabel = UILabel(frame: CGRect(x: (whatsAppTableView.frame.size.width-100)/2, y: 20, width: 100, height: 40))
headerLabel.adjustsFontSizeToFitWidth = true
headerLabel.font = AppFont.PopinsBold(size: 12)
headerLabel.backgroundColor = UIColor.lightGray
headerLabel.textAlignment = .center
headerLabel.roundedAllCorner()
//headerLabel.textColor = UIColor.black
if section == 0 {
headerLabel.text = "5 December" // Put it dynamic as requirment [Date Array]
}
if section == 1 {
headerLabel.text = "Yesterday"
}
if section == 2 {
headerLabel.text = "Today"
}
headerLabelView.addSubview(headerLabel)
return headerLabelView
}
func numberOfSections(in tableView: UITableView) -> Int {
return 3 // Depends on your date array
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 40
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 300 //Put As you required
}
要检查滚动方向/位置-
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if(velocity.y>0) {
//Code will work without the animation block.I am using animation block incase if you want to set any delay to it.
UIView.animate(withDuration: 2.5, delay: 0, options: UIViewAnimationOptions(), animations: {
print("Hide")
}, completion: nil)
} else {
UIView.animate(withDuration: 2.5, delay: 0, options: UIViewAnimationOptions(), animations: {
print("Unhide")
}, completion: nil)
}
}