gpt4 book ai didi

ios - 通过更改模拟器设备更改 UIScrollView 框架

转载 作者:行者123 更新时间:2023-11-28 14:02:59 25 4
gpt4 key购买 nike

我有一个简单的 ViewController,它使用 UIScrollView 显示图像,它有将它附加到 superView 的(顶部、前导、尾随)的约束,还有一个 UIPageControl,它在 iPhoneX 模拟器上工作正常

enter image description here

当我在 iPad Pro 9.7"模拟器上运行它时,输出是

enter image description here

将 Storyboard中的View as 属性从 iPhoneX 更改为 iPadPro 9.7"后效果很好

enter image description here enter image description here

这是我用来计算scrollviewContentSize & slidesSize的逻辑

 override internal func viewDidLoad() {
super.viewDidLoad()
tutorialScrollView.delegate = self
viewModel = TutorialViewModel()
configurePages()
setupSlideScrollView(slides: slides)
configurePageControl()
}

private func configurePages() {
if let viewModel = viewModel {
createSlides(tutotialPages: viewModel.getTutorialPages())
}
}

private func createSlides(tutotialPages: [TutorialPage]) {
for page in tutotialPages {
if let slide = Bundle.main.loadNibNamed(BUNDLE_ID, owner: self, options: nil)?.first as? TutorialSlideView {
slide.configure(title: page.title, detail: page.details, image: page.image)
slides.append(slide)
}
}
}

private func setupSlideScrollView(slides: [TutorialSlideView]) {
tutorialScrollView.contentSize = CGSize(width: view.frame.width * (CGFloat(slides.count)), height: tutorialScrollView.frame.height)
tutorialScrollView.isPagingEnabled = true
for i in 0 ..< slides.count {
slides[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: tutorialScrollView.frame.height)
tutorialScrollView.addSubview(slides[i])
}
}

谁能找到问题所在?

最佳答案

您是否尝试在 setupSlideScrollView 方法中打印 View 的框架以确保它是正确的?如果您使用 AutoLayout,则不能保证它在 viewDidLoad 方法中是正确的。有时会,有时不会。我假设在这种特殊情况下,它恰好在 iPhone X 上是正确的,但在 iPad 上是错误的。

如果这是问题所在,您应该在 viewDidLayoutSubviews 中设置 contentSize 和幻灯片的框架。添加幻灯片作为 subview 应该保留在 viewDidLoad/setupSlideScrollView 中,因为 viewDidLayoutSubviews 通常会被多次调用。

关于ios - 通过更改模拟器设备更改 UIScrollView 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53360760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com