在我的应用程序中,我想在UIScrollview
中显示图像。在这里,我没有得到scrollview的高度和宽度作为图像的高度和宽度。如何获得scrollview(高,宽)到我的图像视图(高度和宽度)?
现在我已经尝试了。
for (int i=0; i<imageArray.count; i++)
{
NSString *str = [imageArray objectAtIndex:i];
NSString *bannerImageURL = [NSString stringWithFormat:@"http:url/%@", str];
CGFloat myOrigin = i * self.view.frame.size.width;
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(myOrigin, 0, self.view.frame.size.width,imgScrollView.frame.size.height)];
myImageView.contentMode = UIViewContentModeScaleAspectFit;
myImageView.clipsToBounds = YES;
myImageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:bannerImageURL]]];
imgScrollView.contentSize = CGSizeMake(self.view.frame.size.width * imageArray.count, self.view.frame.size.height);
CGPoint scrollPoint = CGPointMake(0, 0);
[imgScrollView setContentOffset:scrollPoint animated:YES];
imgScrollView.delegate = self;
[imgScrollView addSubview:myImageView];
这是我的代表方法。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[imgScrollView setContentOffset: CGPointMake(imgScrollView.contentOffset.x,0)];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
NSLog(@"Scrolling - You are now on page %i",page);
}
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *) targetContentOffset
NS_AVAILABLE_IOS(5_0)
{
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
NSLog(@"Dragging - You are now on page %i",page);
}
我的代码中出错了什么? 请帮助我。
答案 0 :(得分:1)
我可以看到几个问题。第一行
myImageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:bannerImageURL]]];
它可能有效但在该行上有太多嵌套调用。如果发生,您无法确定哪个(如果有)失败。将它分成3个单独的调用,以便您可以单步执行并确保其全部工作。
这一行:
imgScrollView.contentSize = CGSizeMake(self.view.frame.size.width * imageArray.count,
缺少Y值(可能是粘贴问题)但是 - 你不需要在你的for循环中执行此操作,你可以在完成添加所有图像后执行此操作。设置委托相同 - 您不需要每次都这样做。并设置滚动点。所有这些都应该发生在for循环之后。
最重要的是,您对scrollViewDidScroll方法的实现调用了setContentOffset。这绝对不行。您进行的调用具有滚动滚动视图的效果,因此将再次调用scrollViewDidScroll方法 - 您会看到问题。
我们提到的第一个问题很可能是你的图片没出现的原因 - 很可能你的网址在某处错了,所以你需要通过单独调用来调试它。