gpt4 book ai didi

ios - 如何缩放专为 iPad 设计的 UIView 以与 iPhone 配合使用?

转载 作者:行者123 更新时间:2023-11-29 05:32:13 24 4
gpt4 key购买 nike

我制作了一款 iPad 游戏,现在正尝试将其移植到 iPhone 上。我在游戏中的一个界面的按钮位于图像顶部的特定位置,因此我想简单地将我为 iPad 构建的界面缩小到 iPhone 尺寸。

到目前为止,我已经取得了一些成功,只需根据 iPad 上的位置和大小定义按钮,然后在代码中按比例缩放每个按钮即可。

//
// ExerciseMenuView.swift
// Reading Expressway
//
// Created by Montana Burr on 7/29/16.
// Copyright © 2016 Montana. All rights reserved.
//

import UIKit

import QuartzCore

@IBDesignable @objc class ExerciseMenuView: UIView {
override func layoutSubviews() {
super.layoutSubviews()
// Adjust subviews according to device screen size.
let iPadProWidth = CGFloat(1024);
let iPadProHeight = CGFloat(768);
let deviceWidth = UIScreen.main.bounds.width;
let deviceHeight = UIScreen.main.bounds.height;
for subview in self.subviews {
let subviewWidthMultiplier = subview.frame.width / iPadProWidth;
let subviewHeightMultiplier = subview.frame.height / iPadProHeight;
let subviewCenterXMultiplier = subview.frame.origin.x / iPadProWidth;
let subviewCenterYMultiplier = subview.frame.origin.y / iPadProHeight;
let subviewHeight = subviewHeightMultiplier * deviceHeight;
let subviewWidth = deviceWidth * subviewWidthMultiplier;
let subviewX = subviewCenterXMultiplier * deviceWidth;
let subviewY = subviewCenterYMultiplier * deviceHeight;
subview.frame = CGRect.init(x: subviewX, y: subviewY, width: subviewWidth, height: subviewHeight)
}
}
}

这大致是 iPad 上屏幕现在的样子:

iPad screen

这就是我希望它在 iPhone 8 上的样子:

Expected iPhone 8 screen

这就是 iPhone 8 模拟器上的实际外观:

Actual iPhone 8 screen

最佳答案

我认为 layoutSubviews 调用了 2 次或更多次,因此您的结果非常小。您可以在 init 方法中更改框架。

或添加标志以检查这是第一次调用

var isFirstTime = true 

override func layoutSubviews() {
super.layoutSubviews()
if isFirstTime {
isFirstTime = false
// Adjust subviews according to device screen size.
...
}
}

关于ios - 如何缩放专为 iPad 设计的 UIView 以与 iPhone 配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57434902/

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