2

プログラムでUILabelをに設定したビューがありますviewDidLoad。そのラベルのテキストはぼやけています。コード:

- (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

この問題に関して私が見つけた他の唯一の 質問は、フレームに整数が必要であることを示唆していましたが、ご覧のとおり、私はすでに整数を持っています。私は彼らが推奨する解決策を試し、今持っていたすべての場所を置き換えるために使用しましたが、それはうまくいきませんでした。テキストがぼやけないようにするにはどうすればよいですか? CGRectIntegral(rect)rect

4

2 に答える 2

1

私も同じ問題を抱えていました。私の場合、その理由は、親ビューで setShouldRasterize を呼び出していたためです。

于 2013-05-02T04:41:42.450 に答える
0

おそらく、黒いテキストにわずかにオフセットされた黒い影があり、ぼやけて見えるという事実です。shadowColor と shadowOffset の行を削除してみて、どのように見えるかを確認してください。

于 2013-05-02T04:47:41.580 に答える