У меня есть UITableViewController
, и я бы хотел разместить над ним UIView (не поверх надкрылья, только выше), сохраняя навигационную панель.(Swift) Добавляя UIView над UITableViewController программно
Это хороший пример того, что я пытаюсь достичь, за исключением того, как я сказал, что я все еще хочу панель навигации:
Я делаю это в Swift (3), и я это делаю все программно (без раскадровки).
Это то, что я до сих пор в моей UITableViewController
, я застрял, когда дело доходит до ограничения программно, я не совсем уверен, что мне нужно:
// Create the view (add subview in viewDidLoad)
let topView: UIView = {
let tv = UIView()
tv.backgroundColor = UIColor.darkGray
tv.translatesAutoresizingMaskIntoConstraints = false
tv.layer.masksToBounds = true
return tv
}()
// Constraints (call in viewDidLoad)
func setupTopView() {
//x, y, width, height constraints
topView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
topView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
topView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
topView.heightAnchor.constraint(equalToConstant: 100)
}
Каждый знает, как это сделать это?
EDIT: Спасибо @Sneak, это то, что я закончил с:
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerLabel = UILabel()
let logoView = UIImageView()
headerLabel.frame = CGRect(x: 0, y: 0, width: 200, height: 21)
headerLabel.text = self.navigationItem.title
headerLabel.textColor = UIColor.white
headerLabel.backgroundColor = UIColor.clear
logoView.frame = CGRect(x: 0, y: 0, width: 90, height: 90)
let logo: UIImage = UIImage(named: self.navigationItem.title!)!
logoView.image = logo
view.addSubview(headerLabel)
view.addSubview(logoView)
return topView
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 175
}
вы можете использовать regular' viewController' и 'tableView', или добавить свой вид в качестве заголовка к текущей' tableView' –