iPhone:ズームがなくプレビューなしで有効になっているuiscrollviewページ
-
29-09-2019 - |
質問
ページングが有効になっているuiscrollviewを実装したいので、いくつかの画像をフリックすることができます。今のところできることはそれだけです。
私はこれまでインターフェイスビルダーでこれをしました:誰かが助けることができますか?
残りをする方法がわかりません。誰かがこれで私を助けてくれませんか。ズーム機能は必要ありません。 ScrollView内の前または次の画像のプレビューは必要ありません。ユーザーが画像をフリックできるようにするシンプルなページング有効なスクロールビューが必要です。
すべての助けをいただければ幸いです。あなたが私にこれをどのように達成できるか段階的に私に言うことができれば、それは最も感謝されるでしょう。ありがとうございました。
私はコードの例を見てきましたが、それらはあまりにも多くの複雑さを持っています。 iveはいくつかを見て、最初からチュートリアルを好みました。ありがとうございました
解決
uiscrollviewのサブビューとしてコンテンツを追加し、ジェスチャー認識者を追加する必要があるように聞こえます。
画像をuiimageviewにロードします。 uiscrollviewのサブビューとしてuiimageviewを追加します。
// do this in init or loadView or viewDidLoad, wherever is most appropriate
// imageView is a retained property
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"];
[scrollView addSubview:imageView];
uiswipegesturerecognizerをuiscrollviewに追加します。
// probably after the code above
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:);
[scrollView addGestureRecognizer:swipe];
[swipe release];
uiswipegesturerecognizerハンドラーで、uiimageviewのロードされた画像を変更します。
- (void)handleSwipe:(UIGestureRecognizer *)swipe {
// do what you need to determine the next image
imageView.image = [UIImage imageNamed:<your replacement image here>];
}
他のヒント
多分あなたは私を見たいです サンプルの実装 これを正確に行うViewControllerの。私はこのことを答えとして書きました この質問.
たぶんこれはあなたにとって複雑すぎるかもしれませんが、それは簡単になることはありません。
そして、これは基本バージョンのみであり、すべての画像を開始時にメモリにロードします。これは実際のアプリケーションでは機能しません。したがって、いくつかのuiscrollview-delegate関数を実装する必要があります。そしてそこでは複雑さが始まります...
// ImageViewController.h
//
// Created by Matthias Bauch on 12.10.10.
// Copyright 2010 Matthias Bauch. All rights reserved.
//
#import <UIKit/UIKit.h>
#warning this is just a quick hack, you should not use this if you dont understand this. There might be leaks, bugs and a lot of whatever.
@interface ImageViewController : UIViewController {
NSString *imagePath;
}
@property (nonatomic, copy) NSString *imagePath;
- (id)initWithImageDirectory:(NSString*)imgPath;
@end
//
// ImageViewController.m
//
// Created by Matthias Bauch on 12.10.10.
// Copyright 2010 Matthias Bauch. All rights reserved.
//
#import "ImageViewController.h"
@implementation ImageViewController
@synthesize imagePath;
- (id)initWithImageDirectory:(NSString*)imgPath {
if (self = [super init]) {
imagePath = [imgPath copy];
}
return self;
}
- (UIView *)viewFullOfImagesAtPath:(NSString *)path withSize:(CGSize)size {
NSError *error = nil;
NSArray *filenames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];
if (!filenames) {
NSLog(@"Error accessing files: %@ [%@]", [error localizedDescription], error);
return nil;
}
UIView *aView = [[UIView alloc] init];
CGFloat xOffset = 0;
for (NSString *filename in filenames) {
NSString *fullPath = [path stringByAppendingPathComponent:filename];
UIImage *image = [[[UIImage alloc] initWithContentsOfFile:fullPath] autorelease];
if (!image)
continue;
CGRect frameRect = CGRectMake(xOffset, 0, size.width, size.height);
UIImageView *imageView = [[[UIImageView alloc] initWithFrame:frameRect] autorelease];
[imageView setImage:image];
imageView.contentMode = UIViewContentModeScaleAspectFit;
[aView addSubview:imageView];
xOffset += size.width;
}
aView.frame = CGRectMake(0, 0, xOffset, size.height);
return [aView autorelease];
}
- (void)viewDidLoad {
[super viewDidLoad];
UIScrollView *scrollView = [[[UIScrollView alloc] initWithFrame:self.view.bounds] autorelease];
scrollView.pagingEnabled = YES;
UIView *contentView = [self viewFullOfImagesAtPath:imagePath withSize:CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height)];
NSLog(@"%f %f %f %f", contentView.frame.origin.x, contentView.frame.origin.y, contentView.frame.size.width, contentView.frame.size.height);
[scrollView addSubview:contentView];
scrollView.contentSize = CGSizeMake(CGRectGetWidth(contentView.frame), CGRectGetHeight(contentView.frame));
[self.view addSubview:scrollView];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Overriden to allow any orientation.
return YES;
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[imagePath release];
[super dealloc];
}
@end