Reputation: 2552
I have 2 views are connected with NavigationController. Second view is scrollView with page controll. My main view has 1 UIButton. When pressing on it are obtained 3-4 seconds delay. There are 21 views in scrollView. And I have spurts when scrolling between view in scrollView. How can I reduce delay and remove spurts?
My viewDidLoad
method:
-(void)viewDidLoad {
self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0.0f, 280.0f, 320.0f, 20.0f)];
[self.view addSubview:self.pageControl];
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 30.0f, 480.0f, 250.0f)];
[self.view addSubview:self.scrollView];
pageControlBeingUsed = NO;
NSInteger firstNumber = 1;
for (NSUInteger i = 0; i < 20; i++) {
BIDExercisePrototype *view = [[BIDExercisePrototype alloc] initWithNumber:firstNumber];
[self.viewsArray addObject:view];
firstNumber += 50;
}
for (NSUInteger i = 0; i < 20; i++) {
UIViewController *someController = [[UIViewController alloc] init];
someController = [self.viewsArray objectAtIndex:i];
someController.view.frame = CGRectMake(480.0f*i, 0.0f, 480.0f, 280.0f);
[self.scrollView addSubview:someController.view];
}
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * self.viewsArray.count, self.scrollView.frame.size.height);
self.pageControl.backgroundColor = [UIColor clearColor];
self.pageControl.currentPage = 0;
self.pageControl.numberOfPages = self.viewsArray.count;
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.pagingEnabled = YES;
self.scrollView.delegate = self;
[self.pageControl addTarget:self action:@selector(changePage) forControlEvents:UIControlEventValueChanged];
}
- (void)scrollViewDidScroll:(UIScrollView *)sender {
if (!pageControlBeingUsed) {
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;
}
- (void)changePage {
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];
pageControlBeingUsed = YES;
}
Upvotes: 0
Views: 1048
Reputation: 10633
May I suggest you forget about recoding the wheel (so to speak) and use existing projects that have already solved the problems
Upvotes: 1
Reputation: 21013
I think you should be able to follow the same practice for improving UITableView's scroll performance.
Do your drawing manually and have only one view in each cell.
Check out the following SO post which discusses multiple ways to improve scrolling performance by rendering your cells in specific ways.
Tricks for improving iPhone UITableView scrolling performance?
Upvotes: 1