如何使用自动布局(约束)将子视图添加到 UIPageViewController?

Posted

技术标签:

【中文标题】如何使用自动布局(约束)将子视图添加到 UIPageViewController?【英文标题】:How add subviews to UIPageViewController with autolayout ( constraints)? 【发布时间】:2018-08-21 10:02:37 【问题描述】:

我尝试将 UIImageView 添加到 UIPageVC 背景视图,但它将作为子视图,因为它会通过约束进行自动布局。

我试图在 UIPageViewController 类中做这样的事情:

override func viewDidLoad() 
    super.viewDidLoad()
    dataSource = self
    delegate = self

    // Adding an UIImageView to background

    let imageView = UIImageView(image: UIImage(named: "backgoundImage"))
    imageView!.contentMode = .scaleToFill
    view.insertSubview(imageView!, at: 0)

感谢所有回答!

【问题讨论】:

【参考方案1】:

您需要对广告限制执行类似操作。

if let imageView = UIImageView(image: UIImage(named: "backgoundImage")) 
  imageView.contentMode = .scaleToFill
  view.insertSubview(imageView, at: 0)

  imageView.translatesAutoresizingMaskIntoConstraints = false

  imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0).isActive = true
  imageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
  imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true
  imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0).isActive = true

【讨论】:

self.view添加任何约束时出现问题我会收到此错误消息并将其添加到问题中,但感谢您的回答,我会尝试使用它! 是的,它有效。谢谢!但是if if let imageView = UIImageView(image: UIImage(named: "backgoundImage"))中没有可选值,我把这个改成let imageView = UIImageView(image: UIImage(named: "backgroundView")) @GolovanovDmitrii 其实应该是UIImage(named: "backgoundImage") 我做 if 块像:if let image = UIImage(named: "backgroundView")

以上是关于如何使用自动布局(约束)将子视图添加到 UIPageViewController?的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局将子视图添加到 UITableView 不会设置其框架

以编程方式使用自动布局将子视图添加到 UICollectionView 不起作用

自动布局和编程约束:如何处理多次触发的 updateConstraints?

由于自动布局没有计算尺寸,将子视图添加到自定义视图最终会出错

使用 iOS 自动布局在子视图控制器与其父视图之间建立约束

使用 Masonry 向视图的子视图添加自动布局约束