我正在开发一个应用程序,我需要使用Xcode 4.5.2在视图中加载许多图像
所以,在顶部,我有一个UIView
,在UIView
内,我有UIScrollView
来显示许多图片,我正在使用此UIScrollView
pagingEnabled模式。由于我要加载许多图像,我知道无法立即加载。所以,我决定添加或删除,如果需要。
当应用程序启动时,我在UIScrollView
中加载了三张图片,当用户转到图片2时,
我想从UIScrollView
删除图像0。当我尝试删除图像0时,我得到了完全白屏。有趣的是,如果我不尝试删除图像0,当用户传递到图像3时,我想要将新图像(图像4)加载到UIScrollView
,并删除图像1.到目前为止,我能够做到这一点。基本上,我的应用程序工作正常,但当我想删除第一个(在索引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 ];
}
}
}
答案 0 :(得分:0)
您可以为三个失败者Tag
中的每一个提供并按[[view viewWithtag:tag] removeFromSuperView]
重复使用,或者您可以尝试由nicklockwood
制作的名为iCarousel的现成项目,这是一个很棒的项目。
可以是horizontal
和vertical
答案 1 :(得分:0)
尝试使用1而不是0的标记开始视图,因为如果我没记错的话,0是未标记视图的默认值,这可能会导致问题