我的目标是创建一个按钮视图并使其随屏幕大小增长,因此它适用于所有设备,占据屏幕宽度的90%。 我没有使用约束,因为它是一个较旧的程序,而现在开启约束的工作量太大了。我本来希望“欺骗”我的方式。所以,我试过这个:
我在全屏视图(在界面构建器中创建)中创建了一个较小的View,它基本上是一个标准的“视图”项。在较小的View里面是一堆UIButtons,它们构成了我的“键盘”。
我想缩放较小的视图(也可以在视觉上缩放按钮),并且按钮在更改大小时仍然可以正常响应。所以我这样做了:
设定: 在该视图中查看(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”的大小也在增大,内部按钮(视觉上)就像我预期的那样。当我从一个设备更改为设备时,它看起来很好。
但有些按钮会停止响应。一些人继续工作得很好,特别是在中心附近,而其他人则停下来。触摸失败从所有边缘开始,随着尺寸的增长向内移动。这几乎就像有一个“面具”阻止按钮在边缘上工作。
所以问题是:这是一种合法的方法吗?它似乎没有记录在任何地方。如果没有,那么人们建议用按钮按比例放大和缩小视图的方式,并且仍然按钮按预期工作?
或许我最好只制作一个小型,中型和大型“键盘”视图,然后根据屏幕尺寸选择最近的一个?
请提出建议和意见。谢谢。