2010-09-07 4 views
0

J'ai travaillé sur un UIPicker horizontal, et j'ai finalement obtenu le sélecteur et les étiquettes sur le sélecteur à l'affichage tourné. Mais, le problème que je remarque maintenant est que les étiquettes s'affichent en basse résolution avec une pixellisation très visible. Jouer avec les valeurs de police semble n'avoir aucun effet sur la pixellisation. J'ai inclus mon code:Rotation UIPicker affichage des étiquettes en basse résolution?

// en vue a fait la charge ...

[super viewDidLoad]; 
    myPicker.delegate = self; 
    myPicker.dataSource = self; 
    myPicker.showsSelectionIndicator =YES; 
    myPicker.backgroundColor = [UIColor blackColor]; 

    CGAffineTransform rotate = CGAffineTransformMakeRotation(3.14/2); 

    //original settings 
    //rotate = CGAffineTransformScale(rotate, 0.1, 0.8); 

    rotate = CGAffineTransformScale(rotate, 0.2, 1.65); 
    [self.myPicker setTransform:rotate];  

    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"155", @"165", @"175", 
         @"185", @"195", @"205", @"215", nil]; 
    self.pickerData = array; 
    [array release]; 

    NSInteger TOTALITEM = [pickerData count]; 

    UILabel *theview[TOTALITEM-1]; // + 1 for the nil 
    for (int i=1;i<=TOTALITEM-1;i++) { 
    theview[i] = [[UILabel alloc] init]; 
    theview[i].text = [NSString stringWithFormat:@"%d",i]; 
    theview[i].textColor = [UIColor blackColor]; 
    theview[i].frame = CGRectMake(0,0, 25, 25); 
    theview[i].backgroundColor = [UIColor clearColor]; 
    theview[i].textAlignment = UITextAlignmentCenter; 
    theview[i].shadowColor = [UIColor whiteColor]; 
    theview[i].shadowOffset = CGSizeMake(-1,-1); 
    theview[i].adjustsFontSizeToFitWidth = NO; 

    UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:10]; 
    [theview[i] setFont:myFont]; 
    } 


    CGAffineTransform rotateItem = CGAffineTransformMakeRotation(-3.14/2); 
    rotateItem = CGAffineTransformScale(rotateItem, 1, 10); 

    for (int j=1;j<=TOTALITEM-1;j++) { 
     theview[j].transform = rotateItem; 

    } 

pickerData = [[NSMutableArray alloc] init]; 


for (int j=1;j<=TOTALITEM-1;j++) { 

    [pickerData addObject:theview[j]]; 

    } 

Répondre

0

Je trouve la question, donc je pensais que je posterais la réponse ici. C'est évident maintenant. J'utilisais les mêmes paramètres de transformation d'échelle sur le texte que l'UIPicker. Pour le réparer j'ai réduit de 50% la transformation sur le texte et utilisé la taille de la police pour contrôler la taille des étiquettes. Voici le code que j'ai changé:

Original:

UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:10]; 
[theview[i] setFont:myFont]; 
} 


CGAffineTransform rotateItem = CGAffineTransformMakeRotation(-3.14/2); 
rotateItem = CGAffineTransformScale(rotateItem, 1, 10); 

fixe:

UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:30]; 
[theview[i] setFont:myFont]; 
} 


CGAffineTransform rotateItem = CGAffineTransformMakeRotation(-3.14/2); 
rotateItem = CGAffineTransformScale(rotateItem, .5, 5);