gpt4 book ai didi

ios - 如何让 viewForZoomingInScrollView 在 Xcode 中跨多个 UIViewControllers 工作?

转载 作者:行者123 更新时间:2023-11-29 11:48:23 26 4
gpt4 key购买 nike

我对 Xcode 比较陌生,正在用 Objective C 制作一个应用程序,其中包含多个 viewController,每个 viewController 都有一个 UIScrollView,其中包含一个可以缩放和滚动的 UIImage。

此代码适用于第一张图片(皮节),但我不知道如何调整 UIView 以在第二张图片(anatomicPlanes)上启用缩放和滚动。目前第二个图像正确导入到第二个 UIScrollView,但当我尝试缩放时,它只是向下和向右跳,并在那里保持静止。

UIScrollView 的大小是使用 Interface Builder 设置的,没有问题。

viewController.h:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIScrollViewDelegate> {

IBOutlet UIScrollView *dermatomeScrollView;
UIImageView *dermatomesImageView;
IBOutlet UIScrollView *anatomicPlaneScrollView;
UIImageView *anatomicPlanesImageView;
}

@property (strong, nonatomic) IBOutlet UIScrollView *dermatomeScrollView;

@property (strong, nonatomic) IBOutlet UIImageView *dermatomesImageView;

@property (strong, nonatomic) IBOutlet UIImageView *anatomicPlanesImageView;

@property (strong, nonatomic) IBOutlet UIScrollView *anatomicPlaneScrollView;

@end

viewController.m

#import "ViewController.h"
@interface ViewController ()

@end

@implementation ViewController

@synthesize dermatomeScrollView, anatomicPlanesImageView, dermatomesImageView, anatomicPlaneScrollView;

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return dermatomesImageView;
}

- (void)viewDidLoad {
[super viewDidLoad];

UIImageView *dermatomes = [[UIImageView alloc]
initWithImage:[UIImage imageNamed:@"dermatomes.jpg"]];

self.dermatomesImageView = dermatomes;
dermatomeScrollView. maximumZoomScale = 1.2;
dermatomeScrollView. minimumZoomScale = 0.4;
dermatomeScrollView. delegate = self;
[dermatomeScrollView addSubview:dermatomesImageView];
dermatomeScrollView.zoomScale = 0.6;

UIImageView *planes = [[UIImageView alloc]
initWithImage:[UIImage imageNamed:@"anatomic planes.jpg"]];
self.anatomicPlanesImageView = planes;
anatomicPlaneScrollView. maximumZoomScale = 1.2;
anatomicPlaneScrollView. minimumZoomScale = 0.4;
anatomicPlaneScrollView. delegate = self;
[anatomicPlaneScrollView addSubview:anatomicPlanesImageView];
anatomicPlaneScrollView.zoomScale = 0.6;
}

感谢任何帮助!

最佳答案

您需要根据请求的 ScrollView 返回正确的 View 。委托(delegate)模式中的每个方法都会传递一个对方法调用发起者的引用,因此您的委托(delegate)实现可以不同地处理它。在这种情况下,委托(delegate)方法调用的发起者是 ScrollView :

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
if (scrollView == dermatomeScrollView) {
return dermatomesImageView;
}

return anatomicPlanesImageView;
}

如果添加更多 ScrollView ,则必须进一步扩展此方法。

关于ios - 如何让 viewForZoomingInScrollView 在 Xcode 中跨多个 UIViewControllers 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42310544/

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