【问题标题】:vertical images in UIScrollViewUIScrollView 中的垂直图像
【发布时间】:2012-09-21 22:05:06
【问题描述】:

我尝试在 UIScrollview 中创建 UIimages 列表。当我水平实现它时,它会按照我想要的方式工作:

如您所见,图像粘在一起。

然后我垂直尝试。它可以工作,但图像之间出现不需要的空间,如下所示:

这是我的代码:

@synthesize scrollView, pageControl;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    pageControlBeingUsed = NO;

    NSArray *pageImages = [NSArray arrayWithObjects:
                               [UIImage imageNamed:@"photo1.png"],
                               [UIImage imageNamed:@"photo2.png"],
                               [UIImage imageNamed:@"photo3.png"],
                               [UIImage imageNamed:@"photo4.png"],
                               [UIImage imageNamed:@"photo5.png"],
                               nil];

    for (int i = 0; i < pageImages.count; i++) {
        CGRect frame;
        //frame.origin.x = self.scrollView.frame.size.width * i;
        //frame.origin.y = 0;

        frame.origin.x = 0;
        frame.origin.y = self.scrollView.frame.size.height * i;

        frame.size = self.scrollView.frame.size;

        UIImageView *newPageView = [[UIImageView alloc] initWithImage:[pageImages objectAtIndex:i]];
        newPageView.contentMode = UIViewContentModeScaleAspectFit;
        newPageView.frame = frame;
        [self.scrollView addSubview:newPageView];
    }

    //self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * pageImages.count , self.scrollView.frame.size.height);

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width , self.scrollView.frame.size.height* pageImages.count);

    self.pageControl.currentPage = 0;
    self.pageControl.numberOfPages = pageImages.count;
}

- (void)scrollViewDidScroll:(UIScrollView *)sender {
    if (!pageControlBeingUsed) {
        // Switch the indicator when more than 50% of the previous/next page is visible
        CGFloat pageWidth = self.scrollView.frame.size.height;
        int page = floor((self.scrollView.contentOffset.y - pageWidth / 2) / pageWidth) + 1;

        //CGFloat pageWidth = self.scrollView.frame.size.width;
        //int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;

        self.pageControl.currentPage = page;
    }
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    pageControlBeingUsed = NO;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    pageControlBeingUsed = NO;
}

- (IBAction)changePage {
    // Update the scroll view to the appropriate page
    CGRect frame;
    frame.origin.x = 0;
    frame.origin.y = self.scrollView.frame.size.height * self.pageControl.currentPage;

//    frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage;
//  frame.origin.y = 0;


    frame.size = self.scrollView.frame.size;
    [self.scrollView scrollRectToVisible:frame animated:YES];

    // Keep track of when scrolls happen in response to the page control
    // value changing. If we don't do this, a noticeable "flashing" occurs
    // as the the scroll delegate will temporarily switch back the page
    // number.
    pageControlBeingUsed = YES;
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.scrollView = nil;
    self.pageControl = nil;
}

- (void)dealloc {
    [scrollView release];
    [pageControl release];
    [super dealloc];
}

@end

在代码中,水平代码行被注释。

你能帮我删除垂直的这个不需要的空间吗?

【问题讨论】:

    标签: iphone objective-c xcode ios5


    【解决方案1】:

    这里的图像大小是问题所在。 检查此newPageView.contentMode = UIViewContentModeScaleAspectFill; 而不是newPageView.contentMode = UIViewContentModeScaleAspectFit;

    【讨论】:

    • 你检查过答案了吗?
    【解决方案2】:

    编辑这部分代码

    UIImageView *newPageView = [[UIImageView alloc] initWithImage:[pageImages objectAtIndex:i]];
            newPageView.contentMode = UIViewContentModeScaleAspectFit; // this statement is making your newPageView bigger then the image, hence spaces are coming when scrolling. !!
            newPageView.frame = frame;
            [self.scrollView addSubview:newPageView];
    

    动态创建您的视图“newPageView”,以便该视图与您的图像大小完全一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-10
      • 2014-11-16
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      相关资源
      最近更新 更多