0

我在这个网站上看过很多帖子,在谷歌上也看过很多帖子,我坚持我确信这很容易。我是 iOS 新手,我很可能读错了其他帖子。我正在尝试用我自己的逻辑和尝试来学习和编写我自己的代码,所以我的代码看起来与我发现的其他代码有很大不同......这就是为什么它不起作用我确定!

我正在尝试使用从右向左滑动来显示图片,但我希望将下一张图片拉过来并滑入到位,而不是我在这里完成的即时切换。基于许多建议,我正在尝试使用 UIScrollView。我无法加载任何内容,并且应用程序在 loadImages 的最后一行崩溃。我已经调试过,但似乎无法弄清楚为什么它没有显示 subView。

这是我的viewDidLoad:

    [super viewDidLoad];
// Do any additional setup after loading the view.
i = 0;
//add UIPanGestureRecognizer
UIPanGestureRecognizer *aPan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(loadImages)];
[aPan setMaximumNumberOfTouches:1];
[aPan setMinimumNumberOfTouches:1];
[self.view addGestureRecognizer:aPan];


_PhotoBundle = [[NSBundle mainBundle] pathsForResourcesOfType:@".jpg"inDirectory:@"Otter_Images"];

_PhotoArray = [[NSMutableArray alloc] initWithCapacity:_PhotoBundle.count];
for (NSString* path in _PhotoBundle)
{
    [_PhotoArray addObject:[UIImage imageWithContentsOfFile:path]];
}

[self loadImages];

这是我的加载图像:

-(void)loadImages

{ NSLog(@"在 loadImages");

_currentImage = [_PhotoArray objectAtIndex:i];
_nextImage = [_PhotoArray objectAtIndex:i + 1];
_prevImage = [_PhotoArray objectAtIndex:i -1];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[scrollView setScrollEnabled:YES];
[scrollView setClipsToBounds:YES];

if (i <= _PhotoArray.count)
{
    [scrollView addSubview:_currentImage]; ////crash!!!!
}
else
{
    _currentImage = [_PhotoArray objectAtIndex:0];
    [scrollView addSubview:_currentImage]; /// Crash!!!!
}

NSLog(@"end of loadImages");

}

在加载一张图片之前,我已经停止了功能。然后,我将添加幻灯片的功能......我希望我正在接近这个权利。

非常感谢您的帮助!!

编辑:

这是我在 .m 中设置 ImageViews 的界面:

@interface ScrollViewViewController ()

@property (nonatomic, retain) NSArray *PhotoBundle;
@property (nonatomic, retain) NSMutableArray *PhotoArray;
@property (nonatomic, retain) UIImageView *currentImage;
@property (nonatomic, retain) UIImageView *nextImage;
@property (nonatomic, retain) UIImageView *prevImage;

@end
4

1 回答 1

1

您正在将UIImage对象添加为子视图。你不能这样做。您必须UIImageView先做一个 - 只有 UIView 子类可以添加为子视图。

制作图像视图很简单——你可以alloc/initWithImage:传入你的图像对象。您需要调整每个图像视图的框架,否则它们将相互重叠。

此外,如果您使用滚动视图,则不需要平移手势识别器。滚动视图会为您处理这个问题。

于 2012-10-26T21:29:08.810 回答