将 UIImageView 扩展为可显示多张照片的可滑动元素
Extend the UIImageView to be a swipeable element that can display multiple photos
我创建了一个简单的应用程序,它有两个按钮和一个 uiimageview。
一个按钮从照片库中拍摄一张照片并将其放在 uiimageview 上。
当用户添加另一张照片时,应保存旧照片,然后用户可以在这两张照片之间滑动。
另一个按钮拍照并放在 uiimageview 上。
所以现在我对在照片之间滑动感到很困惑。我读到 uiimageview 只能包含一个图像。另外,我读到我需要将 uiScrollView 添加到 UiImageView,但我不知道它们是如何协同工作的。
我应该删除我的 UIImageView 然后创建 ScrollView 而不是它吗?
这是我的代码
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (IBAction)pickPhoto:(id)sender {
picker1 = [[UIImagePickerController alloc]init];
picker1.delegate = self;
[picker1 setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[self presentViewController:picker1 animated:YES completion:NULL];
}
- (IBAction)takePhoto:(id)sender {
picker2 = [[UIImagePickerController alloc]init];
picker2.delegate = self;
if([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]){
}
else{
NSLog(@"not avaialbe");
}
[self presentViewController:picker2 animated:YES completion:NULL];
}
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
image = [info objectForKey:UIImagePickerControllerOriginalImage];
[self.imageView setImage:image];
[self dismissViewControllerAnimated:YES completion:NULL];
}
- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[self dismissViewControllerAnimated:YES completion:NULL];
}
更新
所以我添加了一种允许用户向左或向右滑动的方法,他可以看到不同的图片,但是,我不得不将我的图像硬编码到代码中。但我想从照片库中 select 图片,然后这些图片将保存在数组中,然后如果用户添加更多图片,他可以选择滑动浏览他的旧图片。
这是我在图像中滑动的代码
- (IBAction)Swipe:(id)sender {
NSArray *images = [[NSArray alloc]initWithObjects:@"ayat.png", @"qwe.png",@"4444", @"15", nil];
UISwipeGestureRecognizerDirection direction = [(UISwipeGestureRecognizer *) sender direction];
switch(direction)
{
case UISwipeGestureRecognizerDirectionLeft:
imageIndex++;
break;
case UISwipeGestureRecognizerDirectionRight:
imageIndex--;
break;
default:
break;
}
imageIndex = (imageIndex <0)?([images count] -1 ):
imageIndex % [images count];
self.imageView.image = [UIImage imageNamed:[images objectAtIndex:imageIndex]];
}
但在这里我将图片添加到我的项目中。
确实,一个 UIImageView 只能显示一个图像。
有多种方法可以解决这个问题。一种是使用 UIPageViewController。这将使您能够在内容页面之间设置基于侧滑的分页。 Apple 有一个名为 PhotoScroller 的示例应用程序(它曾经从 Xcode 帮助系统链接。使用 Xcode 6,苹果似乎已经删除了所有示例代码。您必须在网上搜索对于示例应用程序。该应用程序还包括平铺渲染,这对您的应用程序来说可能有点矫枉过正,但它确实展示了如何设置页面视图控制器。
您还可以使用 UICollectionView,或创建您自己的自定义视图来管理一组视图。
实际上,现在我考虑了一下,为分页设置 UICollectionView 可能是您最好的选择。
我创建了一个简单的应用程序,它有两个按钮和一个 uiimageview。 一个按钮从照片库中拍摄一张照片并将其放在 uiimageview 上。 当用户添加另一张照片时,应保存旧照片,然后用户可以在这两张照片之间滑动。
另一个按钮拍照并放在 uiimageview 上。
所以现在我对在照片之间滑动感到很困惑。我读到 uiimageview 只能包含一个图像。另外,我读到我需要将 uiScrollView 添加到 UiImageView,但我不知道它们是如何协同工作的。
我应该删除我的 UIImageView 然后创建 ScrollView 而不是它吗?
这是我的代码
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (IBAction)pickPhoto:(id)sender {
picker1 = [[UIImagePickerController alloc]init];
picker1.delegate = self;
[picker1 setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[self presentViewController:picker1 animated:YES completion:NULL];
}
- (IBAction)takePhoto:(id)sender {
picker2 = [[UIImagePickerController alloc]init];
picker2.delegate = self;
if([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]){
}
else{
NSLog(@"not avaialbe");
}
[self presentViewController:picker2 animated:YES completion:NULL];
}
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
image = [info objectForKey:UIImagePickerControllerOriginalImage];
[self.imageView setImage:image];
[self dismissViewControllerAnimated:YES completion:NULL];
}
- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[self dismissViewControllerAnimated:YES completion:NULL];
}
更新
所以我添加了一种允许用户向左或向右滑动的方法,他可以看到不同的图片,但是,我不得不将我的图像硬编码到代码中。但我想从照片库中 select 图片,然后这些图片将保存在数组中,然后如果用户添加更多图片,他可以选择滑动浏览他的旧图片。
这是我在图像中滑动的代码
- (IBAction)Swipe:(id)sender {
NSArray *images = [[NSArray alloc]initWithObjects:@"ayat.png", @"qwe.png",@"4444", @"15", nil];
UISwipeGestureRecognizerDirection direction = [(UISwipeGestureRecognizer *) sender direction];
switch(direction)
{
case UISwipeGestureRecognizerDirectionLeft:
imageIndex++;
break;
case UISwipeGestureRecognizerDirectionRight:
imageIndex--;
break;
default:
break;
}
imageIndex = (imageIndex <0)?([images count] -1 ):
imageIndex % [images count];
self.imageView.image = [UIImage imageNamed:[images objectAtIndex:imageIndex]];
}
但在这里我将图片添加到我的项目中。
确实,一个 UIImageView 只能显示一个图像。
有多种方法可以解决这个问题。一种是使用 UIPageViewController。这将使您能够在内容页面之间设置基于侧滑的分页。 Apple 有一个名为 PhotoScroller 的示例应用程序(它曾经从 Xcode 帮助系统链接。使用 Xcode 6,苹果似乎已经删除了所有示例代码。您必须在网上搜索对于示例应用程序。该应用程序还包括平铺渲染,这对您的应用程序来说可能有点矫枉过正,但它确实展示了如何设置页面视图控制器。
您还可以使用 UICollectionView,或创建您自己的自定义视图来管理一组视图。
实际上,现在我考虑了一下,为分页设置 UICollectionView 可能是您最好的选择。