【发布时间】:2018-06-20 19:59:15
【问题描述】:
我的一个项目遇到了一些麻烦。
不久,我使用故事板制作了一个项目,现在我正在使用 xibs(加上一些编程视图),并且我还在使用 Xcode 10 + macOS mojave(带有新更新)。事情是我有一个图像,我必须将它作为标题放在视图上(不幸的是,这个视图是一个汉堡包/侧面菜单视图,或者你想调用它)。我让一切正常工作,但问题是我不想依赖 IB,只是将图像放在表格视图下方。
首先我把图像视图放在那里,它在设备上没问题,但是在模拟器上你看不到那个图像,说在 nib“com.comp”中找不到“menuImage”(它是如何命名的)。 comp”,这很奇怪,因为图像在资产中。
然后我只是删除了那个卑鄙的视图,并让表格视图覆盖了整个视图。我以编程方式创建了一个 headerView 和一个 imageView 并将 imageView 作为子视图添加到 headerView 然后我将 tableView.headerView 设置为 = 我制作的那个 headerView,里面有一个图像。在模拟器上,它正在用该图像填充 整个 视图,这使得并且仍然没有意义,而在设备上你只能看到一个空白视图。如果我将 headerView 设置为我创建的 backgroundColor 为 .red 我能够在表格视图中看到红色标题。我可以将高度设置为 10 或 200,这是完美的,但是当我想放置图像时,它只是白色的。我尝试将 tableView、headerView 和 imageView 的背景设置为 .clear,但没有奏效。
即使在 IB 内的表视图中放置图像视图也不起作用。现在我正在使用第一个解决方案,即表格视图顶部的图像视图。
现在我要完成这个(对不起:'()......我确实删除了应用程序并重新启动了iPhone并多次重复这个“解决方案”,还创建了一个新项目并手动将我需要的图像放入资产。
我真的查了一下堆栈溢出,但没有发现任何人遇到与我相同的问题,所以没有任何解决方案。
我很抱歉发了这么长的帖子;我希望你们至少有一个想法或提示或任何东西。
编辑:正如我所说的关于代码 sn-p...这里是:
private func setupHeaderView() {
let image = UIImage(named: "menuImage")
let imageView = UIImageView(image: image)
imageView.contentMode = .scaleAspectFill
tableView.translatesAutoresizingMaskIntoConstraints = false
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.width, height: 150))
headerView.addSubview(imageView)
imageView.topAnchor.constraint(equalTo: headerView.topAnchor).isActive = true
imageView.bottomAnchor.constraint(equalTo: headerView.bottomAnchor).isActive = true
imageView.leftAnchor.constraint(equalTo: headerView.leftAnchor).isActive = true
imageView.rightAnchor.constraint(equalTo: headerView.rightAnchor).isActive = true
tableView.tableHeaderView = headerView
}
即使通过注释 translatesAutoresizingMask 和带有锚约束的那 4 行,我也无法看到图像。现在我在表格视图的顶部有一个 imageView(在 xib 文件中执行此操作),我无法在设备上看到图像,但在模拟器上我可以。
【问题讨论】:
-
您确定要在目标中包含图像吗?在 Xcode 的项目导航器(左侧)中选择图像文件,然后在 File Inspector 窗格(右侧)中,您应该会看到 Target Membership 部分。确保您已选择所有构建目标,否则图像文件将不会被打包为应用程序包的一部分。
-
好的...我今天会检查并返回答案。非常感谢:D
-
@wottle 嗨..抱歉延迟回复。我检查并在目标成员中是我的构建目标,唯一的一个。像所有其他图片一样。