iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 如何在旋转时动态地将UIButton重新定位为UIImageView的子视图大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

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

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

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

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

并将其内容模式设置为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的子视图所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。