2011-07-20 9 views
0

私は3番目の&第4世代iPodで異なった動作をするUILabelを持っています。UILabelが第3世代iPodと第4世代iPodで異なって表示されています

私UILabelがある:

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

、第4世代のiPodにそれが正常に動作し、テキストが適切に2行になく、第三世代のiPodテキストラップで包むが、2番目の単語(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]; 
+0

あなたのラベルが単語全体を表示するのに十分でないかもしれないという論理があるようです。 – FreeAsInBeer

答えて

3

RetinaディスプレイではHelvetica Neueをシステムフォントとして使用しますが、古いモデルでは通常のHelveticaを使用します。多分、異なるフォントメトリクスに関係しているでしょう。あなたが知っているフォントを両方で利用できるハードコードで、一貫して表示されているかどうかを確認します。

0

私は理由が表示されていないが、私は2つのより多くのピクセルでフレームの幅を増加させたときに、それが働きました。誰もがこれが啓発される理由を知っています。

関連する問題