Я надеюсь, что кто-то может помочь мне с этим:
Я создаю приложение в XCode, и я добавил несколько UIViews через код, я не могу сделать это через main.storyboard, потому что количество UIViews зависит от того, сколько полей в базе данных. Таким образом, если, например, база данных имеет 20 полей, будет 20 UIViews. Это то, что я сделал, и это работает хорошо, но ... вот в чем проблема: UIViews перекрываются с другими объектами, которые были добавлены в Main.storyboard, и некоторые объекты, такие как сегментированный элемент управления, не работают, когда я пытаюсь взаимодействовать с ними.
Это код, который я получил до сих пор:
import UIKit
class issuesScreen: UIViewController {
@IBOutlet weak var csViewLeading: NSLayoutConstraint!
var showingMenu=false
lazy var scrollView: UIScrollView = {
let view = UIScrollView()
view.translatesAutoresizingMaskIntoConstraints = false
view.contentSize.height = 2000
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(scrollView)
setupScrollView()
}
//Here is when I'm adding the views
func setupScrollView() {
scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
scrollView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
scrollView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
let firstView = UIView()
firstView.translatesAutoresizingMaskIntoConstraints = false
firstView.backgroundColor = .black
scrollView.addSubview(firstView)
firstView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor).isActive = true
firstView.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 40).isActive = true
firstView.widthAnchor.constraint(equalToConstant: 400).isActive = true
firstView.heightAnchor.constraint(equalToConstant: 180).isActive = true
let secondView = UIView()
secondView.translatesAutoresizingMaskIntoConstraints = false
secondView.backgroundColor = .white
scrollView.addSubview(secondView)
secondView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor).isActive = true
secondView.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 41).isActive = true
secondView.widthAnchor.constraint(equalToConstant: 398).isActive = true
secondView.heightAnchor.constraint(equalToConstant: 178).isActive = true
}
@IBAction func showBar(_ sender: UIBarButtonItem) {
if(showingMenu) {
csViewLeading.constant = -240
} else {
csViewLeading.constant = 0
UIView.animate(withDuration: 0.3, animations: {self.view.layoutIfNeeded()})
}
showingMenu= !showingMenu
}
}
Это результат тестирования приложения:
,
серый фон является боковой панелью, и, как вы можете видеть, он перекрывается с UIView.
Я действительно не знаю причину, по которой это происходит, а также, не говорите мне вместо этого использовать tableView, если нет возможности получить этот пользовательский стиль (вот как он должен выглядеть):