gpt4 book ai didi

ios - 为什么我的 View 在缩放之前旋转了 90 度?

转载 作者:行者123 更新时间:2023-11-28 17:32:32 24 4
gpt4 key购买 nike

我有一个 UIView,我想在用户点击它时自动缩放到屏幕大小。

我从 http://cocoawithlove.com/2010/09/zoomingviewcontroller-to-animate-uiview.html 中获取代码

并且缩放有效,除了在缩放开始之前 View 旋转 90 度。为什么会这样?

( View 在轮播中。在用户点击 View 之前,设备会旋转成横向,此时轮播的 View Controller 被推到导航堆栈并显示轮播。)

代码是:

- (void)buttonTapped:(UIButton *) sender
{
NSInteger index = [self.carousel indexOfItemView:sender];

UIView *currentView = [self.carousel itemViewAtIndex: index];
UIView *proxyView = [[UIView alloc] initWithFrame:currentView.frame];
proxyView.hidden = YES;
proxyView.autoresizingMask = currentView.autoresizingMask;
[currentView.superview addSubview: proxyView];

CGRect frame = [currentView.window convertRect:currentView.frame fromView:proxyView.superview];
[currentView.window addSubview:currentView];
currentView.frame = frame;

[UIView
animateWithDuration:2.4
animations:^{
currentView.frame = currentView.window.bounds;
}];

(carousel是UIView派生对象,来自https://github.com/nicklockwood/iCarousel)

谢谢

最佳答案

我怀疑问题是:

currentView.frame = frame;

或:

currentView.frame = currentView.window.bounds;

在横向模式下,您的 View 或其中一个封闭 View 具有将所有内容旋转 90° 的变换。作为UIView docs indicate , 如果 View 的 transform 属性不是恒等变换,则 frame 属性未定义。设置 View 的 frame 可能会隐式地将其 transform 设置回标识,这会导致它旋转回纵向。

上面链接的文档都警告不要在转换时更改 frame,并提供解决方案:

Changes to this property can be animated. However, if the transform property contains a non-identity transform, the value of the frame property is undefined and should not be modified. In that case, you can reposition the view using the center property and adjust the size using the bounds property instead.

关于ios - 为什么我的 View 在缩放之前旋转了 90 度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10818617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com