Вращенный UIPicker отображает метки в низком разрешении? - PullRequest
0 голосов
/ 07 сентября 2010

Я работал над горизонтальным UIPicker, и, наконец, я повернул сборщик и метки на сборщике. Но проблема, которую я сейчас замечаю, заключается в том, что метки отображаются в низком разрешении с очень заметной пикселизацией. Игра со значениями шрифта, похоже, не влияет на пикселизацию. Я включил свой код:

// в соответствии с загрузкой ...

    [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]];

  }

1 Ответ

0 голосов
/ 08 сентября 2010

Я нашел проблему, поэтому я решил опубликовать ответ здесь. Теперь это очевидно. Я использовал те же настройки масштабного преобразования текста, что и UIPicker. Чтобы исправить это, я уменьшил трансформацию текста на 50% и использовал размер шрифта, чтобы контролировать размер надписей. Вот код, который я изменил:

Оригинал:

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


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

Исправлено:

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


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