UIPageControl bug: showing one bullet first and then showing everything

Posted by user313551 on Stack Overflow See other posts from Stack Overflow or by user313551
Published on 2010-04-10T17:24:01Z Indexed on 2010/04/10 17:33 UTC
Read the original article Hit count: 381

Filed under:
|
|

I have some strange behavior using a UIPageControl:

First it appears showing only one bullet, then when I move the scroll view all the bullets appear correctly. Is there something I'm missing before I add it as a subview?

Here is my code imageScrollView.h :

@interface ImageScrollView : UIView <UIScrollViewDelegate> {

NSMutableDictionary *photos; BOOL *pageControlIsChangingPage; UIPageControl *pageControl; } @property (nonatomic, copy) NSMutableDictionary *photos; @property (nonatomic, copy) UIPageControl *pageControl; @end

Here is the code for imageScrollView.m:

#import "ImageScrollView.h"


@implementation ImageScrollView
@synthesize photos, pageControl;

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {
    // Initialization code

NSLog(@"%@",pageControl); } return self; }

- (void) drawRect:(CGRect)rect
{

[self removeAllSubviews];

UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)]; [scroller setDelegate:self];

[scroller setBackgroundColor:[UIColor grayColor]];

[scroller setShowsHorizontalScrollIndicator:NO]; [scroller setPagingEnabled:YES];

NSUInteger nimages = 0; CGFloat cx= 0;

for (NSDictionary *myDictionaryObject in photos) { if (![myDictionaryObject isKindOfClass:[NSNull class]]) { NSString *photo =[NSString stringWithFormat:@"http://www.techbase.com.mx/blog/%@", [myDictionaryObject objectForKey:@"filepath"]]; NSDictionary *data = [myDictionaryObject objectForKey:@"data"];

UIView *imageContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height - 30)];

TTImageView *imageView = [[TTImageView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height - 30)]; imageView.urlPath=photo; [imageContainer addSubview:imageView];

UILabel *caption = [[UILabel alloc] initWithFrame:CGRectMake(0,imageView.frame.size.height,imageView.frame.size.width,10)];

[caption setText:[NSString stringWithFormat:@"%@",[data objectForKey:@"description"]]]; [caption setBackgroundColor:[UIColor grayColor]]; [caption setTextColor:[UIColor whiteColor]]; [caption setLineBreakMode:UILineBreakModeWordWrap]; [caption setNumberOfLines:0]; [caption sizeToFit]; [caption setFont:[UIFont fontWithName:@"Georgia" size:10.0]]; [imageContainer addSubview:caption];

  CGRect rect = imageContainer.frame;
  rect.size.height = imageContainer.size.height;
  rect.size.width = imageContainer.size.width;
  rect.origin.x = ((scroller.frame.size.width - scroller.size.width) / 2) + cx;

rect.origin.y = ((scroller.frame.size.height - scroller.size.height) / 2); imageContainer.frame=rect; [scroller addSubview:imageContainer]; [imageView release]; [imageContainer release]; [caption release];

nimages++; cx +=scroller.frame.size.width;

}

}

[scroller setContentSize:CGSizeMake(nimages * self.frame.size.width, self.frame.size.height)]; [self addSubview:scroller]; pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(self.frame.size.width/2, self.frame.size.height -20, (self.frame.size.width/nimages)/2, 20)]; pageControl.numberOfPages=nimages; [self addSubview:pageControl];

[scroller release];

 }

 -(void)dealloc {

[pageControl release]; [super dealloc]; }

   -(void)scrollViewDidScroll:(UIScrollView *)_scrollView{
     if(pageControlIsChangingPage){
     return;
   }
   CGFloat pageWidth = _scrollView.frame.size.width;
   int page = floor((_scrollView.contentOffset.x - pageWidth /2) / pageWidth) + 1;
   pageControl.currentPage = page; 
   }

  -(void)scrollViewDidEndDecelerating:(UIScrollView *)_scrollView{
 pageControlIsChangingPage  = NO;
}

@end

© Stack Overflow or respective owner

Related posts about uiscrollview

Related posts about iphone