Uiview Do按钮';使用CGAffineTransformScale更改触摸大小?

Uiview Do按钮';使用CGAffineTransformScale更改触摸大小?,uiview,uibutton,cgaffinetransformscale,Uiview,Uibutton,Cgaffinetransformscale,我的目标是创建一个按钮视图,并使其随着屏幕大小而增长,以便在所有设备上都能工作,占据90%的屏幕宽度我没有使用约束,因为这是一个较旧的程序,现在启用约束将是一项非常艰巨的任务。我希望通过欺骗来解决这个问题。所以,我试过这个: 我在全屏视图(在interface builder中创建)中创建了一个较小的视图,它基本上是一个标准的“视图”项。在这个较小的视图中有一堆UIButton,它们构成了我的“键盘” 我想缩放较小的视图(也可以在视觉上缩放按钮),并且在按钮改变大小时仍能正确响应。所以我做了这件

我的目标是创建一个按钮视图,并使其随着屏幕大小而增长,以便在所有设备上都能工作,占据90%的屏幕宽度我没有使用约束,因为这是一个较旧的程序,现在启用约束将是一项非常艰巨的任务。我希望通过欺骗来解决这个问题。所以,我试过这个:

我在全屏视图(在interface builder中创建)中创建了一个较小的视图,它基本上是一个标准的“视图”项。在这个较小的视图中有一堆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);
这实际上在视觉上效果很好,而且“键盘卡”的尺寸越来越大,里面的按钮也越来越大(视觉上),就像我预期的那样。它看起来很好,因为我从一个设备切换到另一个设备

但有时某些按钮会停止响应。有些人继续很好地工作,特别是在中心附近,而另一些人只是停下来。触摸失败从所有边缘开始,并随着尺寸的增大而向内移动。这几乎就像有一个“遮罩”阻止按钮在边缘工作

所以问题是:这是一种合法的方式吗?它似乎没有记录在任何地方。如果不是的话,有什么建议可以使一个视图中的按钮上下缩放,并且按钮仍能按预期工作

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


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

还有一条评论:对于那些可以正常工作的按钮,它们的接触点正好是缩放按钮的大小。因此,可以触摸的按钮按预期工作。好吧,经过多次播放,我可以做到这一点。问题在于未缩放的父视图。子视图的比例大于父视图。视觉效果似乎并不在意,但父视图越小,效果就越差。唉!。所以我改为缩放父视图,一切正常。看起来您可以缩放视图,按钮的触摸区域也可以随之缩放。