视图控制器在模拟器和设备中具有不同的尺寸

问题描述 投票:0回答:1
我有一个专为iPad设计的棋盘游戏应用程序。在每个回合开始时,条件是正确的,用户可以显示弹出窗口显示网格。弹出窗口被设计为自由形式

XIB

。我希望这是正方形。我弄清楚了如何使其在模拟器中进行正方形,但是它不是实际iPad上的平方。为了使其保持平方,我将此代码包括在
viewDidLoad
中:

    super.viewDidLoad()
    let screenSize = min(UIScreen.main.bounds.width,  UIScreen.main.bounds.height)
    preferredContentSize = CGSize(width: screenSize - 50, height: screenSize - 50)

这就是它在模拟器上显示的方式。

enter image description here

这就是它在物理iPad上显示的方式。

enter image description here 我注意,这是一个仅肖像的应用程序。使用变换旋转到适当的每个玩家的方向,大概坐在桌子旁,iPad躺在平坦的桌子上。转换逻辑没有问题。那么,为什么

preferredContentSize

在模拟器上工作,而不能在物理设备上使用呢?也许是相关的,模拟器位于iPados 18上,该设备在iPados上17.

this是如何提出的:

XIB

	

这个似乎解决了我的问题,我将其更改为以下方式:
private func showCrosswordViewController() {
    let crosswordViewController = CrosswordViewController(nibName: "CrosswordViewController", bundle: nil)
    crosswordViewController.delegate = self
    crosswordViewController.view.transform = .identity.rotated(by: activePlayerAngle)
    if let activePlayerHomeView = activePlayerHomeView() {
        crosswordViewController.cardViews.removeAll(keepingCapacity: true)
        for sv in activePlayerHomeView.subviews {
            if let cardView = sv as? CardView {
                cardView.cell = nil
                crosswordViewController.cardViews.append(cardView)
            }
        }
    }
    let sideCount = 12 - (playerPositions.count - 2)
    crosswordViewController.cellsPerRow = sideCount
    present(crosswordViewController, animated: true)
}
swift ipad uiviewcontroller
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.