Я пытаюсь программно разместить представление, содержащее файл пера, под навигационным контроллером.Представление должно расширяться, когда пользователь взаимодействует.Я использую YNDropDownMenu здесь, чтобы разместить представление под моим встроенным навигационным контроллером, которое будет расширяться, когда пользователь нажимает на него.Это нибфил, который добавляется в представление и добавляется на страницу.При работе это выглядит так:
Пример меню
При программном добавлении ограничений я получаю следующее:
![](https://i.stack.imgur.com/4hlAt.gif)
Я использую эти ограничения, чтобы разместить представление под моим контроллером навигации:
// Add Filter Menu
let ZBdropDownViews = Bundle.main.loadNibNamed("DropDownViews", owner: nil, options: nil) as? [UIView]
let FFA409 = UIColor.init(red: 239/255, green: 239/255, blue: 244/255, alpha: 1.0)
if let _pokeDownViews = PokeDownViews {
// Inherit YNDropDownView if you want to hideMenu in your dropDownViews
let view = YNDropDownMenu(frame: CGRect(x: 0, y: (navigationController?.navigationBar.frame.height)! + 20, width: (navigationController?.navigationBar.frame.width)! + 15, height: 45), dropDownViews: _pokedropDownViews, dropDownViewTitles: ["Sort By"])
view.setImageWhens(normal: [UIImage(named: "Search"),UIImage(named: "Leaf Icon"),UIImage(named: "Leaf Icon"),UIImage(named: "Leaf Icon")], selectedTintColorRGB: "FFA409", disabledTintColorRGB: "D3D3D3")
view.setLabelColorWhen(normal: .purple, selected: FFA409, disabled: .purple)
view.setLabelColorWhen(normalRGB: "000000", selectedRGB: "FFA409", disabledRGB: "D3D3D3")
view.setLabelFontWhen(normal: .systemFont(ofSize: 12), selected: .boldSystemFont(ofSize: 16), disabled: .systemFont(ofSize: 16))
// view.setLabel(font: .systemFont(ofSize: 12))
view.backgroundBlurEnabled = true
// view.bottomLine.backgroundColor = UIColor.black
view.bottomLine.isHidden = false
// Add custom blurEffectView
self.view.addSubview(view)
self.edgesForExtendedLayout = []//Optional our as per your view ladder
view.translatesAutoresizingMaskIntoConstraints = false
if #available(iOS 11.0, *) {
let guide = self.view.safeAreaLayoutGuide
view.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
view.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
view.topAnchor.constraint(equalTo: guide.topAnchor).isActive = true
view.heightAnchor.constraint(equalToConstant: 50).isActive = true
} else {
NSLayoutConstraint(item: view,
attribute: .top,
relatedBy: .equal,
toItem: view, attribute: .top,
multiplier: 1.0, constant: 0).isActive = true
NSLayoutConstraint(item: view,
attribute: .leading,
relatedBy: .equal, toItem: view,
attribute: .leading,
multiplier: 1.0,
constant: 0).isActive = true
NSLayoutConstraint(item: view, attribute: .trailing,
relatedBy: .equal,
toItem: view,
attribute: .trailing,
multiplier: 1.0,
constant: 0).isActive = true
view.heightAnchor.constraint(equalToConstant: 50).isActive = true
}
let backgroundView = UIView()
backgroundView.backgroundColor = .black
view.blurEffectView = backgroundView
view.blurEffectViewAlpha = 0.85
// Open and Hide Menu
// view.alwaysSelected(at: 0)
// view.disabledMenuAt(index: 2)
//view.showAndHideMenuAt(index: 3)
view.setBackgroundColor(color: UIColor.groupTableViewBackground)
backgroundView.layer.borderWidth = UIScreen.main.bounds.width
// view.layer.borderWidth = UIScreen.main.bounds.width
view.layer.cornerRadius = 7
PokedropDownViews?.forEach({ (dropDownView) in
if dropDownView.isKind(of: PokeFilterMemeView.self) {
(dropDownView as? PokeFilterMemeView)?.menuViewDelegate = self
}
})
При щелчке представление должно развернуться, чтобы пользователь мог видеть все элементы, содержащиеся в представлении, но я не могу расширить это представление.
Я не уверен, что делать, чтобы это исправить.Может ли кто-нибудь помочь мне здесь?
Спасибо.