Blurry UILabel as programmatic subview of UITableViewCell contentView

colors, iphone, uilabel, uitableview, uiview

Solution

The issue is sub-pixel rendering, which occurs when your origin (which is a float value) has a non-zero fractional component. Round to the nearest whole number and you should be fine.

Problem

I am adding a `UILabel` instance as a subview of my custom `UITableViewCell` instance's `contentView`. When I select the cell, the row is highlighted blue, except for the background of the label. The label text is sharp. When I set the label and content view `backgroundColor` property to `[UIColor clearColor]`, the label text becomes blurry. How do I set the label background color to be clear, to allow the row highlight to come through, while still keeping the label text sharp? One suggestion I read elsewhere was to `round` the label's `frame` values, but this did not have any effect. CODE Here is a snippet of my custom `UITableViewCell` subview's `-setNeedsLayout` method: ``` UILabel *_objectTitleLabel = [[UILabel alloc] initWithFrame:CGRectNull]; _objectTitleLabel.text = [self.awsObject cleanedKey]; _objectTitleLabel.font = [UIAppDelegate defaultObjectLabelFont]; _objectTitleLabel.highlightedTextColor = [UIColor clearColor]; //[UIAppDelegate defaultLabelShadowTint]; _objectTitleLabel.backgroundColor = [UIColor clearColor]; //[UIAppDelegate defaultWidgetBackgroundTint]; _objectTitleLabel.frame = CGRectMake( kCellImageViewWidth + 2.0 * self.indentationWidth, 0.5 * (self.tableView.rowHeight - 1.5 * kCellLabelHeight) + kCellTitleYPositionNudge, contentViewWidth, kCellLabelHeight ); _objectTitleLabel.frame = CGRectIntegral(_objectTitleLabel.frame); _objectTitleLabel.tag = kObjectTableViewCellTitleSubviewType; //NSLog(@"_objectTitleLabel: %@", NSStringFromCGRect(_objectTitleLabel.frame)); [self.contentView addSubview:_objectTitleLabel]; [_objectTitleLabel release], _objectTitleLabel = nil; ... self.contentView.backgroundColor = [UIAppDelegate defaultWidgetBackgroundTint]; self.contentView.clearsContextBeforeDrawing = YES; self.contentView.autoresizesSubviews = YES; self.contentView.clipsToBounds = YES; self.contentView.contentMode = UIViewContentModeRedraw; ```

Original source