多个 UIImage 视图

Posted

技术标签:

【中文标题】多个 UIImage 视图【英文标题】:Multiple UIImage view 【发布时间】:2017-01-15 07:31:22 【问题描述】:

我目前通过以下方式将图像设置到我的 UIImageView 中:

art_image.image = UIImage(named:(artworkPin.title!))

其中 art_image 是图像视图,artworkPin.title 是指图像的名称。但是,如果 UIImageView 存在,我想将第二张图片添加到我想将其编程为

       art_image.image = UIImage(named:(artworkPin.title + "1")?)

这行得通吗?在这种情况下,我会将第二张图片命名为第一张图片的名称,但末尾带有“1”。示例:“Photo.jpeg”和“Photo1.jpeg”都将在图像视图中如果 Photo1.jpeg 存在。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

我自己也遇到过类似的任务。我所做的是,我用UIImageView 的框架创建了一个UIScrollView,它的contentSize 将是imageView.frame.size.width * numberOfImages

let scrollView = UIScrollView(frame: view.bounds)
view.addSubview(scrollView)

scrollView.contentSize = CGSize(width: scrollView.bounds.size.width * CGFloat(numberOfImages), height: scrollView.bounds.size.height))

for i in 0...<numberOfImages.count-1 
    let imageView = UIImageView(frame: CGRect(x: scrollView.bounds.size.width * CGFloat(i), y: scrollView.bounds.origin.y, width: scrollView.bounds.size.width, height: scrollView.bounds.size.height))
    imageView.image = UIImage(named: "artwork" + "\(i)")
    scrollView.addSubview(imageView)

如果需要,您可以使用Timer 对其进行动画处理。

scrollView.setContentOffset(scrollPoint, animated: true)

【讨论】:

【参考方案2】:

您一次只能在 imageivew 中显示 1 张图片,所以如果您有如下几行:

art_image.image = UIImage(named:(artworkPin.title!))
art_image.image = UIImage(named:(artworkPin.title! + "1")?)

art_image 将仅由 Photo1 组成,前提是存在这样的图像,并且未包装的 artifactsPin.title 也不为零,否则您可能会看到一些不同的结果。

如果您确实想将多个图像添加到图像视图以实现动画效果,则需要使用 UIImageView 的 animationImages 属性,该属性以 UIImages 数组为例

art_image.animationImages = [UIImage.init(named:"Photo")!, 
                             UIImage.init(named:"Photo1")!]

希望对你有帮助

编辑

var imagesListArray = [UIImage]()

for position in 1...5

   if let image = UIImage.init(named: ("Photo\(position)"))
   
      imagesListArray.append(image)
   


art_image.animationImages = imagesListArray
art_image.animationDuration = 3.0
art_image.startAnimating()

这将是一种更安全的添加图像的方法,因此它只会添加不为零的图像并添加 Photo1、Photo2 ..... Photo5

关于您的其他问题:

如果你希望用户能够

你说的动画是什么意思? 我又添加了两行代码,结果如下:

art_image.animationDuration = 1.0
art_image.startAnimating()

它会给你这样的东西:

如果您希望用户滑动,则需要进行一些更改,例如: 例如使用滚动视图,collectionview 是最简单的,或者在滑动时使用手势识别器需要更改图像

编辑

看看这个例子。想象一下每个按钮都是您的注释,所以当我点击它时,图像会发生变化。

我有 3 个名为 Photo11.png、Photo21.png 和 Photo31.png 的图像,这是我在按钮处理程序中的代码

@IBAction func buttonTapped(_ sender: UIButton)

    if let image = UIImage.init(named: sender.currentTitle!+"1")
    
            art_image.image = image
    

如您所见,我正在设置带有按钮标题 +“1”的图像,以便显示 Photo11.png 或 Photo21.png 等

【讨论】:

动画是什么意思?我希望它是这样用户可以滑动图像以显示第二张图像。另外,我可以更改“!”吗? '?' 可选这样它只会在存在时添加它? 我该如何更改它以适合我的代码?我不能将它作为“照片(位置)”作为艺术品。标题会根据选择的艺术品而变化。 会是:if let image = UIImage.init(named: (artworkPin.title! + \ ("position")) 吗? @T.Kearsley 如果您希望用户滑动查看另一张图片,仅仅一个简单的UIImageView 是不够的。您需要使用UIPageView 好的,如果我想让它动画化我需要做什么

以上是关于多个 UIImage 视图的主要内容,如果未能解决你的问题,请参考以下文章

将UIImage添加到新的Scroll View

多个UIImage合并成一个UIImage

UIImagePickerController() 确实在 UIImage 视图中显示图像很好,但在集合和表的 UIImage 视图中旋转?

在 UIImage 和 UIImageViews 中在 Swift 中释放内存

如何以编程方式创建 UIImage 视图 - Swift

将 SwiftUI 视图渲染为 UIImage