【问题标题】:Programmatically set UILabel has blurry text (integer frame values)以编程方式设置 UILabel 文本模糊(整数帧值)
【发布时间】:2013-01-24 17:09:11
【问题描述】:

我有一个视图,我以编程方式在viewDidLoad 中设置了 UILabel。该标签上的文字模糊不清。代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];

    [self setTitle:tAddSystemScreenTitle];
    CGRect rect = CGRectMake(10,0,300,80);
    UILabel *messageLabel = [[UILabel alloc] initWithFrame:rect];

    [messageLabel setOpaque:NO];
    if (shouldShowControlForRemoteAccess) {
        [messageLabel setText:kRemoteAccessInfoMessage];
        [messageLabel setNumberOfLines:2];
    } else {
        [messageLabel setText:kOneSystemAlreadyAssociatedAlertString];
        [messageLabel setNumberOfLines:4];

        rect.size.height += 30;
        [messageLabel setFrame:rect];

        rect = dataTable.frame;
        rect.origin.y += 30;
        rect.size.height -= 30;
        [dataTable setFrame:rect];
    }
    NSLog(@"x: %f, y: %f, w: %f, h: %f", messageLabel.frame.origin.x, messageLabel.frame.origin.y, messageLabel.frame.size.width, messageLabel.frame.size.height);
    [messageLabel setBackgroundColor:[UIColor clearColor]];
    [messageLabel setShadowColor:[UIColor blackColor]];
    [messageLabel setTextColor:[UIColor blackColor]];
    [messageLabel setTextAlignment:UITextAlignmentLeft];
    [messageLabel setShadowOffset:CGSizeMake(0,-1)];
    [self.view addSubview:messageLabel];

    NSLog(@"x: %f, y: %f, w: %f, h: %f", self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height);

    [dataTable setScrollEnabled:NO];

    [messageLabel release], messageLabel = nil;
}

当我检查帧值是什么时,我得到了以下信息:

x: 10.000000, y: 0.000000, w: 300.000000, h: 80.000000

self.view 进行相同检查得到:

x: 0.000000, y: 20.000000, w: 320.000000, h: 460.000000

only other questions 在这个问题上我可以找到建议我需要整数的帧,但正如你所见,我已经有了整数。我尝试了他们推荐的解决方案,使用CGRectIntegral(rect) 来替换我刚才rect 的所有位置,但这不起作用。如何防止文字模糊?

【问题讨论】:

  • 你确定父视图的框架有四舍五入的浮点值吗?
  • 我刚刚为self.view 记录了相同的值,看起来它们都是整数。
  • 根据标签rect,不能模糊。这意味着从逻辑上讲它必须是父级。也许是父母的观点,甚至更高?它在滚动视图中吗?可能scrollView的contentOffset没有取整?
  • 我用NSStringFromClass([self.view class])检查了self.view的类,它报告为一个UIView。 dataTableUITableView,也具有整数帧设置:x: 0.000000, y: 80.000000, w: 320.000000, h: 360.000000
  • 看起来dataTable有一个页脚视图,但也有一个整数框架...

标签: ios uilabel


【解决方案1】:

我遇到了同样的问题。就我而言,原因是我在父视图上调用 setShouldRasterize 。

【讨论】:

    【解决方案2】:

    也许是因为您的黑色文本带有略微偏移的黑色阴影,这使它看起来模糊。尝试删除 shadowColor 和 shadowOffset 线,看看效果如何。

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 2017-08-17
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      相关资源
      最近更新 更多