我对contentSize
中的UIScrollView
属性感到有点困惑。我在我的scrollView中有一个图像,我正在缩放和平移。我一直在玩contentSize
的不同值,但在我看来,输入的值并不重要,contentSize
始终设置为图像的大小。我注意到这只发生在我进行缩放时。在缩放之前,contentSize会保留我设置的值,但在缩放后,contentSize
会将自身设置为图像的大小。
我误解了什么吗?
答案 0 :(得分:4)
这很有趣。根据以下- (void)scrollViewDidZoom:(UIScrollView *)scrollView
的打印输出
contentSize实际上是scrollview.frame.size
x scrollview.zoomScale
。
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
if ([self.scrollView zoomScale] < 1.0)[self.scrollView setZoomScale:1.0];
NSLog (@"didZoom: ZoomScale: %.2f; ContentSize: %@; ScrollView: %@", self.scrollView.zoomScale, NSStringFromCGSize(self.scrollView.contentSize),NSStringFromCGSize(self.scrollView.frame.size));
}
打印输出的两行:
didZoom:ZoomScale:1.76; ContentSize:{1798.02,1208.05}; ScrollView:{1024,688}
didZoom:ZoomScale:1.50; ContentSize:{1537.94,1033.3}; ScrollView:{1024,688}
未在文档中找到此“功能”。
修改:还尝试了以下内容:
-(void) manualSettingOfContentSizeAndZoomScale
{
NSLog (@"A: ZoomScale: %.2f; ContentSize: %@; ScrollView: %@", self.scrollView.zoomScale, NSStringFromCGSize(self.scrollView.contentSize),NSStringFromCGSize(self.scrollView.frame.size));
self.scrollView.contentSize = CGSizeMake(1800.0,1200.0);
NSLog (@"B: ZoomScale: %.2f; ContentSize: %@; ScrollView: %@", self.scrollView.zoomScale, NSStringFromCGSize(self.scrollView.contentSize),NSStringFromCGSize(self.scrollView.frame.size));
self.scrollView.zoomScale = 1.8;
NSLog (@"C: ZoomScale: %.2f; ContentSize: %@; ScrollView: %@", self.scrollView.zoomScale, NSStringFromCGSize(self.scrollView.contentSize),NSStringFromCGSize(self.scrollView.frame.size));
self.scrollView.contentSize = self.scrollView.frame.size;
NSLog (@"D: ZoomScale: %.2f; ContentSize: %@; ScrollView: %@", self.scrollView.zoomScale, NSStringFromCGSize(self.scrollView.contentSize),NSStringFromCGSize(self.scrollView.frame.size));
}
结果是:
A:ZoomScale:1.00; ContentSize:{0,0}; ScrollView:{1024,688}
B:ZoomScale:1.00; ContentSize:{1800,1200}; ScrollView:{1024,688}
C:ZoomScale:1.80; ContentSize:{1843.2,1238.4}; ScrollView:{1024,688}
D:ZoomScale:1.80; ContentSize:{1024,688}; ScrollView:{1024,688}
答:好的,记录的默认contentSize为CGSizeZero
(尽管scrollView
通常会显示其内容
在zoomScale 1.0
B:设置contentSize
zoomScale
后没有改变,scrollView
C:设置zoomScale
contentSize
后,外观也相应更改
D:重置contentSize
后没有任何变化 - contentSize
,因为某个属性确实发生了变化,但并未影响外观
结论:使用zoomScale
设置scrollView
内容的外观
如果内存为我提供了正确的内容,那么在UIScrollView
设置为pagingEnabled
的情况下滚动YES
非常重要。这是一个非常复杂的对象,所以也许所有东西都没有像人们想象或想要的那样连接起来。