【问题标题】:IOS: Image from assets folder not/shown in device OR simulatorIOS:资产文件夹中的图像未/显示在设备或模拟器中
【发布时间】: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 嗨..抱歉延迟回复。我检查并在目标成员中是我的构建目标,唯一的一个。像所有其他图片一样。

标签: ios swift xib


【解决方案1】:

您的帖子很难理解,因为如果您使用故事板,则没有发布代码或屏幕截图,即两者都会导致您的描述复杂化。这是可以做的。

图像资源中的图像通常由

var imageView = UIImageView(frame: yourFrame)
imageView.image = UIImage(named: "nameFromAssets")
imageView.contentMode = .scaleAspectFit //This helps keep the image original aspect ratio
self.view.addSubview(imageView) // Or whatever view you are using

或者使用故事板

1) 将 imageView 放置在屏幕上的某个位置并按照您的需要组织它(约束等)

2) 在检查器中,使用下拉菜单选择您想要的图像

3) 提供您想要的 contentMode

【讨论】:

  • 感谢您的关注。好吧,我正在使用 xibs,但问题是我想以编程方式向表格视图添加标题。我使用该图像创建了一个 imageView,并将其作为子视图添加到我也在代码中创建的标题中,然后将该视图分配给 tableView.tableHeaderView。我今天要发布一些代码。如果可以的话,请随时看一下... Domo arigato! :D
  • 嗨@impression7vx 你能告诉我这个看不到图像的问题是否有任何问题吗?我的意思是这真的很奇怪......如果你知道任何事情会很有用。提前谢谢你
  • 尝试添加 imageView.translatesAutoresizingMaskIntoConstraints = false
  • 嗯,默认情况下该属性为假...但我什至尝试过,但没有结果...在模拟器中,即使您现在看到代码,整个表格视图都被该图像填充,并且在设备上,除了图像应该在的空白区域之外,您什么也看不到。即使通过查看视图层次结构,我也可以看到图像视图,但看不到图像!什么?我的意思是……要么我有问题,要么我有问题……
  • 根据 UIImage 的类参考,它说您应该避免创建尺寸大于 1024 x 1024 的 UIImage 对象。我认为这是问题所在……如果是这样,我将用答案更新我的问题。
猜你喜欢
  • 2012-04-16
  • 2011-02-16
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
相关资源
最近更新 更多