0

我的目标是制作一个按钮视图,让它随着屏幕尺寸的增长而增长,这样它就可以在所有设备上运行,占据屏幕宽度的 90%。我没有使用约束,因为它是一个较旧的程序,并且现在打开约束将是一项太大的工作。我希望以“欺骗”的方式解决这个问题。所以,我尝试了这个:

我在全屏视图(在界面构建器中创建)中创建了一个较小的视图,它基本上是一个标准的“视图”项。在那个较小的 View 里面是一堆 UIButton,它们构成了我的“键盘”。

我想缩放较小的视图(它也可以在视觉上缩放按钮),并且仍然让按钮在改变大小时正确响应。所以我这样做了:

设置:视图(buttonView)在该视图内带有 UIButtons。视图和按钮根据需要(在 Interface Builder 中)附加到 IBOutlets 和 IBActions。以下代码缩放视图以匹配屏幕:

_keyboardCard.transform = CGAffineTransformIdentity;   // reset to normal
CGFloat keyboardWidth   =  _keyboardCard.bounds.size.width;
// screenWidth is set earlier and has width bounds value for full screen
CGFloat widthScale = (screenWidth/keyboardWidth)*0.9;   // 90% of full screen width
_keyboardCard.transform = CGAffineTransformScale(CGAffineTransformIdentity, widthScale, widthScale);

这实际上在视觉上工作得很好,并且“keyboardCard”的大小增加了,里面的按钮(视觉上)也是如此,就像我预期的那样。当我从设备更改为设备时,它看起来不错。

但有时某些按钮会停止响应。有些继续工作得很好,特别是在中心附近,而其他人只是停下来。触摸失败从所有边缘开始,并随着尺寸的增长向内进行。就好像有一个“面具”阻止按钮在边缘工作。

所以问题是:这是一种合法的方法吗?它似乎没有在任何地方记录。如果没有,作为一种方法可以使带有按钮的视图放大和缩小并且仍然使按钮按预期工作,有什么建议?

或者也许我最好制作一个“键盘”的小、中和大视图,然后根据屏幕尺寸选择最接近的一个?

请提出建议和意见。谢谢你。

4

0 回答 0