我发现我能够在导航栏上设置阴影图像,但我只想在滚动时设置它,而无法找到如何执行此操作。任何帮助赞赏!!
答案 0 :(得分:1)
UIScrollView
您可以从UITableView
或.setTrash(true)
访问此委托方法,因为后者是前者的子类。
答案 1 :(得分:0)
您可以将此代码与scrollViewDidScroll(_:):
一起使用import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "Hello"
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
guard let navBar = navigationController?.navigationBar else {
return
}
if scrollView.contentOffset.y > navBar.frame.height {
addShadow(navBar)
} else {
deleteShadow(navBar)
}
}
func addShadow(_ view: UIView) {
view.layer.shadowColor = UIColor.gray.cgColor
view.layer.shadowOffset = CGSize(width: 0.0, height: 6.0)
view.layer.masksToBounds = false
view.layer.shadowRadius = 10.0
view.layer.shadowOpacity = 0.5
}
func deleteShadow(_ view: UIView) {
view.layer.shadowOffset = CGSize(width: 0, height: 0.0)
view.layer.shadowRadius = 0
view.layer.shadowOpacity = 0
}
}