UILabel在第三代和第四代ipod上的显示方式不同



我有一个UILabel在第3 &第四代ipod。

我的UILabel是:

<UILabel: 0x881e80; frame = (10 76; 70 28); text = 'Produits Indisponibles'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x863fe0>>

现在,在第四代iPod上,它工作得很好,文本包装成两行,但在第三代iPod上,文本包装,但第二个单词(Indisponibles)消失了。原因是什么呢?

如果我将帧宽度再增加1个像素,它就可以正常工作了。下面是我的代码:

self.titleLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
                self.titleLabel.text = @"Produits Indisponibles";
                self.titleLabel.isAccessibilityElement = NO;
                self.titleLabel.backgroundColor = [UIColor clearColor];
                self.titleLabel.opaque = NO;
                self.titleLabel.textColor = [UIColor whiteColor];
                self.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
                self.titleLabel.numberOfLines = 2;
                self.titleLabel.highlightedTextColor = [UIColor whiteColor];
                self.titleLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;
                self.titleLabel.textAlignment = UITextAlignmentCenter;
                self.titleLabel.font = [UIFont boldSystemFontOfSize:11];
                CGSize aLabelSize = CGSizeMake(self.frame.size.width - 20, 28);
                CGSize aStringSize = [self.titleLabel.text sizeWithFont:self.titleLabel.font constrainedToSize:aLabelSize lineBreakMode:UILineBreakModeWordWrap];
                CGFloat theYOrigin = self.bounds.size.height - 34;
                if (aStringSize.height < 15) {
                    theYOrigin = theYOrigin + 14;
                }
                self.titleLabel.frame = CGRectMake(10, theYOrigin, aLabelSize.width, aStringSize.height);
                [self addSubview:self.titleLabel];

Retina显示器使用Helvetica Neue作为系统字体,而旧型号使用普通的Helvetica。这可能与不同的字体指标有关。硬编码一个你知道可用的字体,看看它们是否显示一致。

我不知道原因,但是当我将帧的宽度增加2个像素时,它工作了。任何知道原因的人都会有所启发。

最新更新