滚动视图删除子视图

时间:2017-10-03 20:17:22

标签: swift uiscrollview uiimage scrollview subview

我有一个UIScrollView,显示了许多图像(here)。我试图删除 - 例如 - 第三张幻灯片,但是当我尝试使用此代码时

if let viewWithTag = self.view.viewWithTag(2) {
    viewWithTag.removeFromSuperview()
}

它似乎有效,因为我无法再滚动到该幻灯片,但只要我尝试滚动到它(here),我仍然可以在底部看到它:正如您在视频中看到的那样我试图滚动到它的最后一个图像只是弹回来。

我试图从视图中完全删除该幻灯片,而不是隐藏它:)。任何帮助请帮助吨。

基本上只是在我删除任何幻灯片后尝试重新加载/更新视图。

for i in 0..<2 {
    front = UIImageView()

    if let url = URL.init(string: frontImageDisplay[i]) {
        front.downloadedFrom(url: url)
    }
    front.contentMode = .scaleToFill

    let yPosition = self.view.frame.height * CGFloat(i) + self.view.frame.height/2 - (self.view.frame.height / 1.1)/2
    let xPosition = self.view.frame.width/2 - (self.view.frame.width / 1.1)/2
    front.frame = CGRect(x: xPosition, y: yPosition, width: self.view.frame.width / 1.1, height: self.view.frame.height / 1.1)
    front.layer.borderWidth = 5

    back = UIImageView()

    if let url = URL.init(string: frontImageDisplay[i]) {
        back.downloadedFrom(url: url)
    }

    back.contentMode = .scaleToFill
    back.frame = CGRect(x: xPosition, y: yPosition, width: self.view.frame.width / 1.1, height: self.view.frame.height / 1.1)
    back.layer.borderWidth = 5

    mainScrollView.contentSize.height = mainScrollView.frame.height * CGFloat(i + 1)

    imageOne.tag = i
    imageTwo.tag = i

    imageOne.addSubview(front)
    imageTwo.addSubview(back)
}

1 个答案:

答案 0 :(得分:0)

以下代码行似乎有误:

imageOne.tag = i
imageTwo.tag = i

首选方法:

  1. 使用UIPageViewController - 在使用之前了解它并查看它是否符合您的需求。
  2. 首选使用自动布局,因为它适应不同的屏幕和方向,您无需进行框架计算
  3. 请勿使用标签来识别视图。而是保留源图像的模型(数组)并迭代它们。