2016-03-02 101 views
0

在我的应用程序中,我想在UIScrollview中显示图像。在这里,我没有得到scrollview的高度和宽度作为图像的高度和宽度。如何让scrollview(Hight,Width)到我的图像视图(高度和宽度)? 这是我现在试过的。如何在iOS中以编程方式在UIScrollView中添加UIImageVIew?

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

你的问题似乎是误导。你在哪里调用for循环? –

+0

在视图中加载方法。 –

+1

尝试在viewWillAppear/viewDidAppear中调用它。在视图加载时框架尺寸还没有正确计算。 –

回答

1

Theres几个问题,我可以看到。首先行

myImageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:bannerImageURL]]]; 

它可能工作,但该行上有太多的嵌套调用。如果发生错误,您无法确定哪个(如果有)失败。将它分成3个独立的电话,以便您可以逐步完成并确保其全部正常工作。

这条线:

imgScrollView.contentSize = CGSizeMake(self.view.frame.size.width * imageArray.count, 

即使世界Y值缺失(可能是粘贴问题),而且 - 你不需要做这里面你的循环,你可以做到这一点,当你添加完所有图片。同样设置代表 - 你不需要每次都做。并设置滚动点。所有这些应该在for循环之后发生。

但最重要的是,您的方法scrollViewDidScroll的实现调用了setContentOffset。那绝对不行。您所做的调用具有滚动scrollview的效果,因此会再次调用scrollViewDidScroll方法 - 您会看到问题。

为什么你的图片没有出现的最可能的原因是我提到的第一个问题 - 很可能你的URL在某个地方是错误的,所以你需要通过单独调用进行调试。

+0

我的代码工作正常。感谢您的回复。 –

+0

可以请您选择它作为选择的答案,然后也许upvote?将不胜感激@MangiReddy谢谢:) –

+0

@LukeSmith他没有,但我会upvote:D –

相关问题