2016-07-03 7 views
0

私はsizeWithFontに関連するいくつかの未解決のIOS7以前の廃止予定を修正しようとしています。私はここに答えを続けてきました。'sizeWithFont:constrainedToSize:lineBreakMode:'is deprecated:boundingRectWithSizeによる廃止予定の修正CGRectMake

..ほとんどがCGSizeとCGSizeMakeを扱わなければなりません。しかし私の問題はCGRectMakeと関係があり、私はそれを私が望むようにまとめることはできませんでした。

はここで、元のコードです:

CGSize optimumSize = [percentageText sizeWithFont:self.percentageFont constrainedToSize:CGSizeMake(max_text_width,100)]; 
CGRect percFrame = CGRectMake(text_x, right_label_y, optimumSize.width, optimumSize.height); 

そして、ここで私が何をしようとしたものです:

NSString *percentageText = [NSString stringWithFormat:@"%.1f%%", component.value/total*100]; 
       NSAttributedString *attributedText = 
       [[NSAttributedString alloc] 
       initWithString:percentageText 
       attributes:@ 
       { 
       NSFontAttributeName: self.percentageFont 
       }]; 
       CGRect percFrame = [attributedText boundingRectWithSize:(CGRectMake(text_x, right_label_y, max_text_width,100)) 
                   options:NSStringDrawingUsesLineFragmentOrigin 
                   context:nil]; 

       CGSize optimumSize = percFrame.size; 

しかし、私はエラーを取得する:「互換性のない型CGSizeのパラメータにCGRectを送信します」。しかし、私は幅と高さだけでなく、4つの属性をすべて必要とします。だから私は CGRectを使用してCGSizeを使用していない。どのように私はそれを動作させることができますか?

そうでなければ、CGSizeだけを使用する私の他のコードはすべて正常に動作します。 CGRectが本当に必要なコードが2つあります。

答えて

0

NSAttributedStringのメソッドは、引数として最大サイズをとります。 CGRectが返す元の位置を設定することができます。

NSString *percentageText = [NSString stringWithFormat:@"%.1f%%", component.value/total*100]; 
      NSAttributedString *attributedText = 
      [[NSAttributedString alloc] 
      initWithString:percentageText 
      attributes:@ 
      { 
      NSFontAttributeName: self.percentageFont 
      }]; 
      CGRect percFrame = [attributedText boundingRectWithSize:(CGSizeMake(max_text_width,100)) 
                  options:NSStringDrawingUsesLineFragmentOrigin 
                  context:nil]; 
      percFrame.origin = CGPointMake(text_x, right_label_y) 
+0

これは合理化する方法を思いつきました...どうにかして2行のコードが10行のコードになりました。私はバックエンドで何かをして、それが非難される前と同じくらい効率的(あるいはより効率的)にしていたでしょう。とにかくあなたの答えが働く。ありがとう! –

関連する問題