如何使我的kivy布局在iPad和iPhone上具有相同的比例?



我已经让我的应用程序在我的iPhone上工作在一个规模,看起来不错。我现在已经在iPad上运行了,所有的东西都变得更宽了,文字看起来也小了很多。我已经在两个设备上打开了应用程序,并将它们放在一起,它看起来好像文本大小实际上是相同的。显然,它在大屏幕上看起来更小。

另一件很奇怪的事是在iPad上,应用屏幕填满了整个屏幕,但在iPhone上,它在顶部和底部之间各有10%的差距。

我查阅了苹果的资料和kivy文档,但没有发现任何结论。

我怎样才能使它们在任何iOS设备上自动缩放?另外,我怎样才能让应用程序填满iPhone的整个屏幕?这是Xcode中需要改变的东西,还是一个很重要的东西?我在这儿有点迷路了。如有任何帮助,我将不胜感激。

编辑:我将包括一个小部件从我的一个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

据我所知,由于iphone和ipad的屏幕尺寸和比例不同,目前还没有具体的答案。但是,我建议您尝试两种解决方案:

  • kivy.utilsplatform变量存储了它所运行的平台的名称。如果我是正确的,如果你的应用程序在iPhone上运行,那么它应该返回"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在iPad上返回"ios",那么我说您应该首先获得屏幕分辨率,然后做类似于上述示例的检查,如下所示:
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") 

要填满整个屏幕,你可以在Xcode的常规页面中勾选" Requires fullscreen "复选框。之后,运行你的应用程序,它应该可以工作了。

相关内容

  • 没有找到相关文章

最新更新