如何让我的 kivy 布局在 iPad 和 iPhone 上保持相同的比例?

How can I make my kivy layout the same scale on iPad and iPhone?

我的应用程序在我的 iPhone 上运行,规模看起来不错。我 运行 现在在我的 iPad 上,所有内容的间距都更大了,文本看起来也更小了。我在两台设备上都打开了该应用程序,并将它们放在一起,看起来两台设备上的文本大小实际上是一样的。显然它在更大的屏幕上看起来更小。

另一件有点奇怪的是,在 iPad 上,应用程序屏幕完全填满了整个屏幕,但在 iPhone 上,它有点害羞 运行顶部和底部各增加约 10%。

我已经仔细查看了 apple 的资料和 kivy 文档,但看不出任何结论。

我怎样才能使它们在任何 iOS 设备上自动缩放?另外,如何让应用程序填满 iPhone 上的整个屏幕?是 Xcode 中需要更改的东西,还是 kivy 的东西?我在这里有点迷路了。非常感谢任何帮助。

编辑: 我将从我的一个 kivy 页面中添加一个小部件,也许问题出在我的布局方式上。

BoxLayout:
    pos_hint: {"top": .9, "center_x": .5}
    size_hint: 1, .3
    size_hint_y: None
    height: 450 # set 330 for iphone
    ScrollView:
        Label:
            id: brief_res_1
            font_size: '11sp'
            do_scroll_x: True
            size_hint_y: None
            size_hint_x: None
            size: self.texture_size
            halign: "left"
            valign: "center"
            text:

我建议在 kv 中使用 size_hintpos_hint 作为小部件,并使用 kivy.metrics (sp) 作为 font_size .

据我所知,由于 iPhones 和 iPads 的屏幕尺寸和比例不同,目前您的问题没有具体的答案。但是,我建议您尝试 2 个解决方案:

  • kivy.utils 中的 platform 变量存储 运行 所在平台的名称。如果我是正确的,如果你的应用在 iPhone 上是 运行 那么它应该 return "ios""unknown" 对于 iPad,因为它显然不检查 ​​"ipados"。如果是这样,你应该从你的 iOS 兼容脚本中创建一个单独的 kivy 脚本,它更喜欢 iPad 屏幕尺寸,然后你可以添加一个检查,像这样:
from kivy.utils import platform
from kivy.lang import Builder

if platform == "ios":
    Builder.load_file("ios.kv")
elif platform == "unknown":
    Builder.load_file("ipados.kv")
else:
    # your preferences...
  • 如果由于某种原因 platform returns "ios" 在 iPad 上,那么我说你应该先获取屏幕分辨率,然后进行类似的检查对于上面的例子,是这样的:
from kivy.core.window import Window


Window.fullscreen = True
Window.maximize()

resolution = Window.size
Window.fullscreen = False

if resolution[0] / resolution[1] < 1:
    Builder.load_file("ios.kv")
else:
    Builder.load_file("ipados.kv")