我一直在努力让它工作一整天。我尝试了不同的tutos并进行了调整(在这里搜索),但它无法正常工作。
在iphone 5s上,它几乎可以正常工作,除了最后一页,它似乎在滚动视图中添加了“一半”页面。绿色部分是滚动视图的背景颜色,它不会反弹。
在iphone 6上,内容全部搞砸了,而不是有5张图片,它只有4个半(我不能再滚动它,它不会反弹)。
如果我按下继续,它在两种屏幕尺寸上都能正常工作。只有滑动选项无法正常工作。
这是我将图像放在滚动视图中的代码。
func loadContent() {
var frame = CGRect(x: 0, y: 0, width: 0, height: 0)
for i in 0..<imageArr.count { // is 5
frame.origin.x = scrollView.frame.size.width * CGFloat(i)
frame.size = self.scrollView.frame.size
let imageView = UIImageView(frame: frame)
let image = UIImage(named: imageArr[i])
imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin]
imageView.contentMode = .scaleAspectFit
imageView.clipsToBounds = true
imageView.backgroundColor = UIColor.red
imageView.image = image
scrollView.addSubview(imageView)
self.scrollView.contentSize.width = self.scrollView.frame.width * CGFloat(i)
}
}
///Function of Continue button
@IBAction func nextImage(_ sender: Any) {
UIView.animate(withDuration: 0.3) {
self.scrollView.contentOffset.x = self.scrollView.frame.width * CGFloat(self.pageControl.currentPage+1)
}
}
我一直在寻找4小时的解决方案,但似乎没有任何效果。
[编辑]:有了TheFuquan的答案,我可以解决问题。
[Obs:] 如果您搜索混乱的内容,这些代码行可以帮助您。我看到的所有tutos都没有这些线条,而且内容不会完美对齐,这就解决了:
imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin]
imageView.contentMode = .scaleAspectFit
imageView.clipsToBounds = true
答案 0 :(得分:3)
为什么for loop
中有以下一行:
self.scrollView.contentSize.width = self.scrollView.frame.width * CGFloat(i)
您应该在for loop
之前执行此操作:
self.scrollView.contentSize.width = self.scrollView.frame.width * imageArr.count
答案 1 :(得分:2)
这是我每次尝试在视图中加载一些动态内容时遇到的典型问题。
如果您从loadContent
调用您的viewDidLoad
功能,那么您应该在loadContent
内拨打viewDidLayoutSubviews
请注意,与viewDidLoad
不同,viewDidLayoutSubviews
可能会多次调用,因此请设置一个标记,以确保只调用loadContent
一次。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
guard self.didLoadContent == false else {
return
}
self.didLoadContent = true
loadContent()
}
这样您就可以从故事板中加载视图来调整iPhone的大小。