2016-07-03 43 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; 

但我得到的錯誤:「發送的CGRect以不兼容的類型CGSize的參數」。不過,我需要所有四個屬性......不僅僅是寬度和高度。所以我使用CGRect而不是CGSize。任何想法如何讓它工作?

否則,我所有使用CGSize的其他代碼都可以正常工作。這只是我有兩段代碼確實需要CGRect。

回答

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

他們有GOT想出一種方法來簡化這個......不知何故是2行代碼現在是10行代碼。我會在後端做一些事情,以使其效率更高(或更高效),因爲它已被棄用。無論如何,你的答案有效。謝謝! –

相關問題