在当前设备屏幕宽度中完美拟合按钮的数学公式
Posted
技术标签:
【中文标题】在当前设备屏幕宽度中完美拟合按钮的数学公式【英文标题】:Math formula for perfectly fitting buttons in current devices screen width 【发布时间】:2015-12-03 15:59:47 【问题描述】:谁能指出我正确的方向,以弄清楚如何正确编写我的代码,以便任何特定 y 轴上的所有按钮都尽量适应当前设备屏幕的宽度?
更准确地说,目前,我有 4 个按钮(由 SKSpriteNode 制成)需要在屏幕内放置,使其看起来完美贴合。设备屏幕是纵向的,尽管从数学的角度来看,这并不重要,只是屏幕的实际宽度。每个按钮宽度使用相同的纹理,因此宽度相同,但它本身的纹理可能会不时改变,导致每个按钮的宽度要么缩小一点,要么扩大。
现在,我的定位代码如下:
btnLvl1.position = CGPointMake(_scrollingNode.size.width/20*3, scrollStart.position.y - 60);
btnLvl2.position = CGPointMake(_scrollingNode.size.width/20*8, scrollStart.position.y - 60);
btnLvl3.position = CGPointMake(_scrollingNode.size.width/20*13, scrollStart.position.y - 60);
btnLvl4.position = CGPointMake(_scrollingNode.size.width/20*18, scrollStart.position.y - 60);
我希望有人可以推荐一个数学公式,以确保无论每个按钮的宽度和按钮数量如何,它们都将尽可能地放置在屏幕宽度内。如果可以为设备屏幕的高度做一些事情(但不是必需的),那将是一个超级奖励。
附:我确实尝试过自己解决这个问题,但我的数学能力不是很强。
【问题讨论】:
使用您的场景大小比例,然后制作您的 button.size 和 button.possition 我将如何在代码中做到这一点?你能打个例子吗? 为什么不使用自动布局?它为您计算。 我在 SpriteKit 的 SKScene 中完成所有这些工作(因为它是一个游戏),而且我从未见过有人使用自动布局。我什至不知道如何为 SKScene 设置它... 目前结果如何?是不是节点对于屏幕来说有点太宽了?在您的视图控制器中,您为填充(Aspect Fill,Fill)定义了什么?同样在您的视图控制器中,您是否定义了 Sprite Kit 场景的大小(默认为 1024x768)? 【参考方案1】:您可以使用场景大小来“自动适应”任何节点。例如,如果您想在屏幕上居中放置一个按钮:
button.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2);
虽然你可以使用这个:
button.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
【讨论】:
以上是关于在当前设备屏幕宽度中完美拟合按钮的数学公式的主要内容,如果未能解决你的问题,请参考以下文章
最完美的数学公式转图片:纯Python实现,可设置字体字号颜色和分辨率