9 мая 2011 г.

Размытый текст в UILabel

Я не привык пользоваться Interface Builder в xCode. Все компоненты создаю динамически и для меня это вполне удобно. И вот недавно столкнулся с проблемой отображения текста в компоненте UILabel, а поскольку это "корневая" компонента входящая в такие компоненты как UIButton и UITableViewCell, то проблема оказалась серьезной.

Итак, на скриншоте ниже отображены UILabel с одним шрифтом и одним и тем-же размером.



Вторая метка выглядит размытой. Вот код, которым я создавал эти UILabel.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    
 CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
    
    UILabel *normal = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 30.0, screenRect.size.width, 50.0)];
    normal.text = @"Test label1";
    normal.textAlignment = UITextAlignmentCenter;
    normal.font = [UIFont systemFontOfSize:16.0];
    normal.backgroundColor = [UIColor clearColor];
    [self.window addSubview:normal];
    [normal release];
    
    
    UILabel *fuzzy = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 60.55, screenRect.size.width, 50.0)];
    fuzzy.text = @"Test label2";
    fuzzy.textAlignment = UITextAlignmentCenter;
    fuzzy.font = [UIFont systemFontOfSize:16.0];
    fuzzy.backgroundColor = [UIColor clearColor];
    [self.window addSubview:fuzzy];
    [fuzzy release];
    
    
    [self.window makeKeyAndVisible];
    return YES;
}
Решилось все просто, оказывается UILabel не дружит с нецелыми координатами (60.5 - в CGRectMake(0.0, 60.5, screenRect.size.width, 50.0))

4 комментария:

  1. Ваще спасибо, думал, меня глючит

    ОтветитьУдалить
  2. размытие проявляется только для неретиновских дисплеев. с ретиной можно ставить нецелые координаты

    ОтветитьУдалить
  3. sym9
    на iPad тоже проявляется, хотя никакого противоречия с вашим высказыванием нет

    ОтветитьУдалить