Xcode 4.5.2を使用してビューに多くの画像をロードする必要があるアプリを開発しています
そのため、上部に がありUIView
、この内部に多くの画像を表示するUIView
必要があり、これを pagingEnabled モードで使用しています。読み込む画像がたくさんあるので、一度に読み込むことができないことはわかっています。そのため、必要に応じて追加または削除することにしました。UIScrollView
UIScrollView
アプリの起動時に に 3 つの画像をロードしましUIScrollView
た。ユーザーが画像 2 に移動すると、 から画像 0 を削除したいと思います。画像 0UIScrollView
を削除しようとすると、完全に白い画面が表示されます。画像 0 を削除しようとしないでください。ユーザーが画像 3 に移動すると、新しい画像 (画像 4) を にロードし、画像 1UIScrollView
を削除します。これまでのところ、これを行うことができます。基本的に、私のアプリは問題なく動作しますが、最初の (インデックス 0の) 画像を削除したい場合、画面に完全に白い画面が表示されます。
なぜ私がこの振る舞いをしているのか分かりますか? 警告もエラーもありませんでした。画像 0 ではなく、他のすべての画像を削除できる可能性はありますか?
ありがとうございました。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
static NSInteger currentPage = 0 ;
CGFloat pageWidth = self.scrollView.frame.size.width ;
float fractionalPage = self.scrollView.contentOffset.x / pageWidth ;
NSLog(@"%f",fractionalPage);
if(fractionalPage == currentPage+1)
{
NSLog(@"Swipe Left");
currentPage++;
NSLog(@"Current page :%d",currentPage);
[self setLayoutImages:kLeft] ;
}
else if(fractionalPage+1 ==currentPage)
{
NSLog(@"Swipe Right");
currentPage--;
NSLog(@"Current page :%d",currentPage);
[self setLayoutImages:kRight];
}
}
-(void)setLayoutImages:(Direction )direction
{
int currentPage = self.scrollView.contentOffset.x / scrollViewWidth ;
if(direction == kLeft)
{
self.scrollView.contentSize = CGSizeMake(((currentPage+2) * scrollViewWidth), 350.0f);
if(![self.scrollView viewWithTag:currentPage+1])
{
NSString *imageName = @"iPhone.png" ;
UIImage *image = [UIImage imageNamed:imageName];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image ] ;
imageView.tag = currentPage+1 ;
CGRect frame = imageView.frame ;
frame.size.height = imageHeight;
frame.size.width = scrollViewWidth ;
frame.origin.x = (currentPage+1) * scrollViewWidth ;
frame.origin.y = 0 ;
imageView.frame = frame ;
if (currentPage>2) { //To be able to remove the first image,i need to add equal here,but i got white screen.
[[self.scrollView viewWithTag:(currentPage -2)]removeFromSuperview ] ; }
[self.scrollView addSubview:imageView ] ;
}
}
else if(direction == kRight)
{
if(![self.scrollView viewWithTag:currentPage-1] && currentPage >0)
{
NSString *imageName = @"gs.jpeg";
UIImage *image = [UIImage imageNamed:imageName];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image ];
imageView.tag = currentPage-1 ;
CGRect frame = imageView.frame ;
frame.size.height = imageHeight ;
frame.size.width = scrollViewWidth ;
frame.origin.x = (currentPage-1)*scrollViewWidth ;
frame.origin.y = 0 ;
imageView.frame = frame ;
[[self.scrollView viewWithTag:currentPage+2]removeFromSuperview ] ;
[self.scrollView addSubview:imageView ];
}
}
}