- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
谁能准确描述 -[UIScrollView zoomToRect:animated:]
的行为?这种方法似乎确实做了一些复杂的事情,但 Apple 的文档非常稀少。
当内容大小在宽度和/或高度上小于 ScrollView 的大小时,此方法出现不可预测的行为。在某些情况下,此方法会导致 ScrollView 在本应为 0 的情况下具有负的内容偏移量。传递略有不同的矩形后,它会将内容偏移量保留为 0,就像我期望的那样。
为了演示这种奇怪的行为,我设置了一个示例项目,其中包含一个大小为 (200, 200) 的 ScrollView ,其中包含一个大小为 (100, 100) 的内容 View 。我希望内容 View 的缩放到 rect ((0, 0), (200, 200)) 应该将内容留在左上角(即什么都不应该发生).但是,它实际上导致内容滚动到 ScrollView 边界的右下角(内容偏移量(-100,-100))。为什么会这样?
这是我的示例项目中的代码:
@implementation RootViewController
- (void)loadView {
self.view = [[UIView alloc] init];
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
self.scrollView.delegate = self;
self.scrollView.backgroundColor = [UIColor whiteColor];
self.scrollView.minimumZoomScale = .5;
self.scrollView.maximumZoomScale = 4;
self.contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
self.contentView.backgroundColor = [UIColor redColor];
[self.contentView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)]];
[self.scrollView addSubview:self.contentView];
self.scrollView.contentSize = self.contentView.frame.size;
[self.view addSubview:self.scrollView];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.contentView;
}
- (void)handleTap {
[self.scrollView zoomToRect:CGRectMake(0, 0, 200, 200) animated:YES]; // Try changing to 199, 199 to get completely different behavior
}
@end
感谢您的任何见解!现在我猜测 UIScrollView
并不是为了显示小于其自身大小的内容而设计的。我的用例是,我可能有一个比 ScrollView 宽但高度较短的内容 View ,我需要能够以编程方式滚动到该内容 View 的右端或左端。
最佳答案
除非有人有更好的答案,否则我将得出结论,当生成的 contentSize
小于 时,调用
任一维度的大小。换句话说,如果你想安全的话,内容应该比 ScrollView 大。-zoomToRect:animated:
会产生未定义的结果>bounds
关于ios - -[UIScrollView zoomToRect :animated:] weird behavior when contentSize < bounds. 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900933/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Any way of changing the duration of zoomToRect for UIS
我想平移到我的 UIScrollView 中的某个点,同时也放大到最大缩放级别。此处省略缩放矩形计算,似乎需要调用两次 zoomToRect 才能缩放和平移到我想要的位置。 [self perform
如果我有一个 UIScrollView用UIImageView其中有 1,000 x 1,000(和 contentSize 上的相同 UIScrollView)传递的 CGRect 是什么?在zoo
假设我调用了-[UIScrollView zoomToRect:animated:],动画值为YES。怎样才能立即取消这个动画,让它就像没发生过一样? 我在某些单元测试中调用此方法,并希望在下一次测试
我想我在 UIScrollView 中发现了一个错误,但我想检查其他人是否观察到同样的事情以及它是否是预期的行为。 我有一个 UIScrollView 并尝试使用 ZoomToRect 设置它正在查看
在我的 UIScrollView 自定义子类中,如何对名为 -zoomToPoint:scale:animated: 的方法进行单元测试? 我想测试此方法是否正确修改了 MyScrollView 的
有人可以向我解释一下这段代码吗?它用于使用 Swift 在 iOS 应用程序中缩放图像,但我不明白它为什么起作用 let scrollViewSize = scrollView.bounds.size
有什么方法可以指定[UIScrollView zoomToRect:zoomRect animated:YES]的动画持续时间吗? 目前是快速 animated:YES 或即时 animated:NO
我有一个显示图像的 UIScrollView。我想以编程方式放大到当前可见区域中心附近某处的矩形(不一定要精确)。我将如何获得此矩形的坐标以与 zoomToRect 一起使用?请注意,此图像可能已经放
我的 UIScrollView 在使用 zoomToRect 时没有设置它的 contentOffset。 我有一个 UIScrollView,里面有一个 UIImageView。到目前为止,滚动和缩
我有一个 UIScrollView A 和一个 subview B,(它本身是 contentView DA 的 strong> - 所以 B 不是 ScrollView A 的 contentVie
我的应用程序有一个带有一个 subview 的 UIScrollView。 subview 是一个扩展的 UIView,它使用 drawLayer 事件中的图层将 PDF 页面打印到自身。 使用内置的
最近几天我开始使用 Objective C,我真的很难理解 uiscrollview。我想让 View 围绕大于屏幕尺寸的图像移动,并且每次点击屏幕时都可能放大/缩小。为了尝试一些早期测试,我在下面编
谁能准确描述 -[UIScrollView zoomToRect:animated:] 的行为?这种方法似乎确实做了一些复杂的事情,但 Apple 的文档非常稀少。 当内容大小在宽度和/或高度上小于
我需要密切监视 ScrollView 的比例,以便我可以根据 ScrollView 的动画缩放更新内容 View 的元素(管理多个 CALayers 的 subview )。 在 iOS 3.1 上,
我是一名优秀的程序员,十分优秀!