我有一个小型测试项目,我试图导入我的生产项目。导致问题的ViewController包括背景图像和滚动视图(SV)。
测试SV中出现3张图像,但只有2张图像出现在生产中。似乎应该出现第一张图像的间隙。
请注意。第一个图像是VC的背景图像。我设置它,然后从提供scrollview的数组中删除它。
以下是两个ViewControllers。请注意我将VC嵌入到TabBar和NavBar控制器中进行测试,因为这是我生产的。
最令人费解的是代码完全相同。图片网址相同。但是添加到scrollView的UIImageView的数量是不同的。请注意代码中的最后一个print语句:
func setupList() {
print(foodPairings.count)
let imageStringURL = foodPairings[0].imageURL
let encodedURL = imageStringURL.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
guard let imageURL: URL = URL(string: encodedURL!) else {return}
bgImage.af_setImage(withURL: imageURL)
foodPairings.removeFirst()
print(foodPairings.count)
print(foodPairings.indices)
for i in foodPairings.indices {
let imageView = UIImageView()
let imageStringURL = foodPairings[i].imageURL
let encodedURL = imageStringURL.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
guard let postURL: URL = URL(string: encodedURL!) else {return}
imageView.af_setImage(withURL: postURL, placeholderImage: #imageLiteral(resourceName: "Placeholder"), filter: nil, progress: nil, imageTransition: .noTransition, runImageTransitionIfCached: false, completion: nil)
imageView.tag = i
imageView.contentMode = .scaleAspectFill
imageView.isUserInteractionEnabled = true
imageView.layer.cornerRadius = 20.0
imageView.layer.masksToBounds = true
listView.addSubview(imageView)
//attach tap detector
imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(didTapImageView)))
}
print(listView.subviews.count)
listView.backgroundColor = UIColor.clear
positionListItems()
}
测试结果中的打印语句:
4 3 0 ..< 3 4
生产打印以下内容:
4 3 0 ..< 3 5
为什么listView.subviews.count在生产中有所不同?
答案 0 :(得分:0)
我已经解决了这个问题,但目前尚不清楚问题的根源是什么。
在测试中,我的Scroll View甚至在添加UIImageViews数组之前就有了一个子视图。在生产中,在我添加阵列中的图像之前,Scroll View有两个子视图。
在我添加子视图的循环之前,我从ScrollView中删除所有子视图:
listView.subviews.forEach({ $0.removeFromSuperview() })
for i in foodPairings.indices {
print("SubviewCount: \(listView.subviews.count)")
let imageView = UIImageView()
...
我的测试和生产Mac都运行XCode 9 Swift 4.为什么子视图计数不同仍然是一个谜。