我有一个UILabel,在第三代和第四代iPod上的行为有所不同。

我的UILabel是:

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


现在,在第4代iPod上它可以正常工作,并且文本可以正确地换行为2行,但是在第3代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];

最佳答案

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

10-08 09:01