Это код моего вида прокрутки во внешнем виде прокрутки. Это внутреннее представление прокрутки содержит UIImageView, который должен быть масштабируемым, но он не работает. Кроме того, изображение не полностью отцентрировано, и я не знаю почему. Можете ли вы сказать мне, что не хватает для увеличения? (внутренняя часть называется FMImageZoomController)
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//CGRect frame = CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height);
CGRect frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
self.zoomScroller = [[UIScrollView alloc] initWithFrame:frame];
self.zoomScroller.userInteractionEnabled = YES;
self.zoomScroller.delegate = self;
//self.zoomScroller.clipsToBounds = YES;
self.imageView = [[UIImageView alloc] initWithFrame:frame];
self.imageView.userInteractionEnabled = YES;
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
[self.zoomScroller addSubview:self.imageView];
self.view = self.zoomScroller;
float minimumScale = self.imageView.frame.size.width /self.zoomScroller.frame.size.width;
self.zoomScroller.maximumZoomScale = 5.0f; //Change as per you need
self.zoomScroller.minimumZoomScale = minimumScale; //Change as you need
self.zoomScroller.zoomScale = minimumScale;
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
РЕДАКТИРОВАТЬ: Я нашел ошибку, но не могу ее исправить. Масштабируемое представление прокрутки вызывает делегата постраничного представления прокрутки (внешнего вида прокрутки). Но это не имеет никакого смысла, я никогда не устанавливал делегата внутреннего scrollview на внешний контроллер представления. Я только установил это здесь во внутреннем ?! Как я могу добиться, чтобы он вызывал исключительно внутренний вид прокрутки?
Это мой внешний код, для которого подготовлены все разбитые на страницы представления прокрутки:
-(void)prepareScrollView
{
for(int i =0;i<[self.layoverPhotoAssets count];i++){
PHAsset *asset = self.layoverPhotoAssets[i];
FMImageZoomViewController *zoomController = [[FMImageZoomViewController alloc] init];
// UIImageView *imageView = [[UIImageView alloc] init];
int x = self.scrollView.frame.size.width * i;
zoomController.view.frame = CGRectMake(x, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
//zoomController.view.frame = CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height);
[self.scrollView addSubview:zoomController.view];
zoomController.zoomScroller.delegate = zoomController;
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.resizeMode = PHImageRequestOptionsResizeModeFast;
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; //I only want the highest possible quality
options.synchronous = NO;
options.networkAccessAllowed = YES;
[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:self.scrollView.frame.size contentMode:PHImageContentModeAspectFill options:options resultHandler:^(UIImage *result, NSDictionary *info) {
dispatch_async(dispatch_get_main_queue(), ^{
if(result){
zoomController.imageView.image = result;
}
});
}];
//self.scrollView.contentSize= ;
}
[self.scrollView setContentSize:CGSizeMake(self.scrollView.frame.size.width * [self.layoverPhotoAssets count], 0)];
[self scrollToAsset:self.selectedAsset];
}