gpt4 book ai didi

iphone - UIScrollview ContentSize 魔法

转载 作者:行者123 更新时间:2023-11-29 03:45:01 28 4
gpt4 key购买 nike

我正在双击 UIScrollView 中缩放 UIImageView。在 Interface Builder 中设置后工作正常。我在这里看到的神奇之处在于,当我放大/缩小时,scrollViewcontentSize 会自行增加/减少。我检查了 viewDidLoad 中的 contentSize,它不为零。

我尝试了同样的方法,从 IB 中删除 scrollViewimageView 并以编程方式创建它们。添加imageViewtapGestureRecognizer后,我无法在这里缩放。当我检查原因时,contentSize 到处都保持为零。

当我将它们添加到 IB/xib 中时,我没有对 contentSize 执行任何操作。我没有将其设置在任何地方。我发现它工作得很好,contentSize 会在我需要的地方自动调整。但是,当我以编程方式创建 scrollView 时,它不会复制。

我怎样才能让它发挥作用?我欢迎您的建议。

这是我的引用代码。

在IB中创建的ScrollView

- (void)viewDidLoad {
[super viewDidLoad];

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
[doubleTap setNumberOfTapsRequired:2];
[imageView addGestureRecognizer:doubleTap];
imageScrollView.minimumZoomScale=1.01;
imageScrollView.maximumZoomScale=5;
imageScrollView.zoomScale=1.01;
NSLog(@"height = %f width = %f", imageScrollView.contentSize.height, imageScrollView.contentSize.width);
}

NSLog 说

height = 449.479767 width = 320.000000

以编程方式创建的ScrollView

- (void)viewDidLoad {
[super viewDidLoad];

imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
[doubleTap setNumberOfTapsRequired:2];
[imageView addGestureRecognizer:doubleTap];
imageScrollView.minimumZoomScale=1.01;
imageScrollView.maximumZoomScale=5;
imageScrollView.zoomScale=1.01;

[self.view addSubview:imageScrollView];
[self.imageScrollView addSubview:imageView];
NSLog(@"height = %f width = %f", imageScrollView.contentSize.height, imageScrollView.contentSize.width);
}

NSLog 说

height = 0.000000 width = 0.000000

最佳答案

这些属性

self.minimumZoomScale=1.01;
self.maximumZoomScale=5;
self.zoomScale=1.01;

应该是你的scrollView的属性:

imageScrollView.minimumZoomScale=1.01;
imageScrollView.maximumZoomScale=5;
imageScrollView.zoomScale=1.01;

此外,您还需要设置 contentSize 属性(使用 IB 时,您不需要设置它,因为它是从 xib 文件加载的):

imageScrollView.contentSize = CGSizeMake(width,height);

使用适当的值。

此外,您需要设置委托(delegate):

imageScrollView.delegate = self;

以及至少一个委托(delegate)方法来指示要缩放哪个 subview :

 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return scrollView.subviews[0];
}

(实际上,您最好在 subview 上设置标签或将其分配给属性以获取对其的引用,因为 ScrollView 也有内置 subview )

关于iphone - UIScrollview ContentSize 魔法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17851568/

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