gpt4 book ai didi

uiscrollview - 旋转 iPhone 后 UIScrollView 中的 contentOffset

转载 作者:行者123 更新时间:2023-12-04 04:46:25 26 4
gpt4 key购买 nike

我有一个 UIImageViewUIScrollView我在使用 contentOffset 时遇到了一些麻烦属性(property)。从 Apple 的引用资料中,这被定义为:

contentOffset :内容 View 的原点与 ScrollView 的原点偏移的点。

例如,如果图像位于屏幕的左上角,如下所示,那么 contentOffset 将是 (0,0):

   _________
|IMG |
|IMG |
| |
| |
| |
| |
---------

对于设备旋转,我有以下设置:
 scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight);

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeCenter;
scrollView.contentMode = UIViewContentModeCenter;

这将使所有内容围绕屏幕中心旋转。
旋转屏幕后,屏幕将如下所示:
    ______________
| IMG |
| IMG |
| |
--------------

我的问题是,如果我现在读到 contentOffset ,它仍然是 (0,0)。 (如果我在横向模式下移动 UIImage, contentOffset 的值会更新,但它是根据错误的原点计算的。)

有没有办法计算 UIImage 相对于屏幕左上角的坐标。 contentOffset当屏幕处于 View 的初始方向时,似乎只返回这个值。

我试过阅读 self.view.transformscrollView.transform ,但他们始终是身份。

最佳答案

这是执行此操作的一种方法:对于 ScrollView 集

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth 
| UIViewAutoresizingFlexibleHeight);

scrollView.contentMode = UIViewContentModeTopRight;
UIViewContentModeTopRight即使旋转行为不正确,模式也会将左上角保持在坐标 (0,0) 处。要获得与 UIViewContentModeCenter 相同的旋转行为,请添加
    scrollView.contentOffset = fix(sv.contentOffset, currentOrientation, goalOrientation);

进入 willAnimateRotationToInterfaceOrientation . fix是函数
CGPoint fix(CGPoint offset, UIInterfaceOrientation currentOrientation, UIInterfaceOrientation goalOrientation) {

CGFloat xx = offset.x;
CGFloat yy = offset.y;

CGPoint result;

if (UIInterfaceOrientationIsLandscape(currentOrientation)) {

if (UIInterfaceOrientationIsLandscape(goalOrientation)) {
// landscape -> landscape
result = CGPointMake(xx, yy);
} else {
// landscape -> portrait
result = CGPointMake(xx+80, yy-80);
}
} else {
if (UIInterfaceOrientationIsLandscape(goalOrientation)) {
// portrait -> landscape
result = CGPointMake(xx-80, yy+80);
} else {
// portrait -> portrait
result = CGPointMake(xx, yy);
}
}
return result;
}

上面的代码将使 ScrollView 围绕屏幕中心旋转,并确保左上角的编码始终为坐标 (0,0)。

关于uiscrollview - 旋转 iPhone 后 UIScrollView 中的 contentOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232813/

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