У меня есть UIScrollView, отображающий три изображения (в настоящее время два UIImages и UIColor, поскольку я еще не получил третий рисунок), и я пытался добавить UIPageControl, но у меня возникли некоторые проблемы.
Мне нужно, чтобы UIPageControl имел прозрачный фон (что достаточно просто в IB), а затем чтобы он располагался поверх UIScrollView и отображал, на какой странице находится пользователь.
Первая проблема заключается в том, что UIPageControl находится за UIScrollView.
Вторая проблема заключается в том, что она прокручивается с первой страницей, когда вы пытаетесь перейти на вторую (если я выписываю изображение, и оно видно за ним).
Третья проблема состоит в том, что я считаю, что она не показывает, на какой странице находится пользователь (хотя это может работать, и я просто не смогу увидеть из-за второй проблемы!)
Я довольно новичок в XCode, но пользуюсь им пару недель, поэтому я не полный любитель. Я уже давно ищу решение этой проблемы и, похоже, больше ничего не могу найти. Извините, если этот вопрос возник раньше, и я просто не могу его найти!
Вот мой код:
HomeViewController.h
#import <UIKit/UIKit.h>
@interface HomeViewController : UIViewController {
UIScrollView *scrollView;
UIPageControl *pageControl;
}
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;
@property (nonatomic, retain) IBOutlet UIPageControl *pageControl;
@end
HomeViewController.m
#import "HomeViewController.h"
@implementation HomeViewController
@synthesize scrollView;
@synthesize pageControl;
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *colors = [NSArray arrayWithObjects:[UIColor colorWithPatternImage:[UIImage imageNamed:@"SuperflyPoster_1.jpg"]], [UIColor colorWithPatternImage:[UIImage imageNamed:@"SuperflyPoster_2.jpg"]], [UIColor blueColor], nil];
for (int i = 0; i < colors.count; i++) {
CGRect frame = scrollView.frame;
frame.origin.x = 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);
}
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
// Update the page 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)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;
}
- (void)dealloc {
[pageControl release];
[scrollView release];
[super dealloc];
}
@end
Большое спасибо.