iPhone: UIScrollView с пейджингом в альбомном режиме - PullRequest
0 голосов
/ 31 января 2012

Я создаю приложение в Только в ландшафтном режиме , и у меня проблема в том, что в iPhone Пейзажный режим не заполняет цвет шириной *, но я не могу понять, как Могу ли я сделать это, пожалуйста, дайте мне идею развить эту функциональность.

См. https://github.com/cwalcott/UIScrollView-Paging

Заранее спасибо.

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad 
{
    pageControlBeingUsed = NO;

    NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], nil];
    for (int i = 0; i < colors.count; i++) 
    {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;

        UIView *subview = [[UIView alloc] initWithFrame:frame];
        subview.backgroundColor = [colors objectAtIndex:i];
        [self.scrollView addSubview:subview];
        [subview release];
    }

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

    self.pageControl.currentPage = 0;
    self.pageControl.numberOfPages = colors.count;

    [super viewDidLoad];
}

- (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.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 = 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;
}

enter image description here

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Решите мою проблему, просто удалите внутренний subView в свойстве Autosizing UIScrollView в интерфейсе Builder.

0 голосов
/ 31 января 2012

Я думаю, что причиной будет self.scrollView.frame.size возвращает (768,1024) в viewDidLoad: метод, но на самом деле вам нужно (1024,768).Чтобы решить эту проблему,

1) В IB Атрибут Инспектора меняет ориентацию на ландшафтный режим.или 2) Измените

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

на

frame.size = CGSizeMake(1024,768);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...