objective-c – 如何在旋转时动态地将UIButton重新定位为UIImageView的子视图

objective-c – 如何在旋转时动态地将UIButton重新定位为UIImageView的子视图,第1张

概述我正在开发一款iPad应用程序,可让您在智能房屋的原型中控制不同的东西.例如,它可以让你打开和关闭灯.为此,我制作了一个UI ImageView,显示了房子的平面图,并添加了UIButtons作为每个可以切换的灯的子视图. 如您所见,使用每个UIButton的setFrame方法将按钮完美地放置在平面图上.但是,当我将iPad旋转到纵向时,会发生以下情况: 按钮显然仍然具有相同的原点,但它与图像的 我正在开发一款iPad应用程序,可让您在智能房屋的原型中控制不同的东西.例如,它可以让你打开和关闭灯.为此,我制作了一个UI ImageVIEw,显示了房子的平面图,并添加了UIbuttons作为每个可以切换的灯的子视图.

如您所见,使用每个UIbutton的setFrame方法将按钮完美地放置在平面图上.但是,当我将iPad旋转到纵向时,会发生以下情况:

按钮显然仍然具有相同的原点,但它与图像的重新定位无关.

平面图图像具有以下设置的支柱和d簧:

并将其内容模式设置为Aspect Fit.

我的问题是

如何动态重新定位每个UIbutton,使其具有相同的相对位置.我想我必须在{dID / should} autorotatetoInterfaceOrIEntation委托方法中处理这个问题.

应该注意的是UIImageVIEw是可缩放的并且为了解决这个问题,我已经实现了scrollVIEwDIDZoom委托方法,如下所示:

for (UIVIEw *button in _floorPlanImage.subvIEws) {           CGRect oldFrame = button.frame;    [button.layer setAnchorPoint:CGPointMake(0.5,1)];    button.frame = oldFrame;    button.transform = CGAffinetransformMakeScale(1.0/scrollVIEw.zoomScale,1.0/scrollVIEw.zoomScale);}

先感谢您!

解决方法 我发现布局子视图的最佳方法是 – (voID)layoutSubvIEws方法.您必须继承UIImageVIEw并重写该方法.

每当您的帧更改时,此方法将自动被调用,并且在第一次显示视图时也会调用此方法.

如果将所有布局代码放在此方法中,它会阻止布局碎片和重复,将视图代码保留在视图中,并且大多数情况下默认情况下都可以正常工作.

总结

以上是内存溢出为你收集整理的objective-c – 如何在旋转时动态地将UIButton重新定位为UIImageView的子视图全部内容,希望文章能够帮你解决objective-c – 如何在旋转时动态地将UIButton重新定位为UIImageView的子视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1042089.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存