2012-02-18 32 views
10

我最近更新到Xcode 4.3,它禁用了我的UILabels的自動收縮屬性。我在IB重新檢查了這些箱子並重建了該項目,但它仍在切斷文本。有什麼建議麼?這是一個已知的錯誤?有沒有辦法來解決這個編程問題。如何在Xcode 4.3中使Autoresize屬性起作用?

+0

被修復了,你是否嘗試過編程設置'UILabel'的'autoresizingMask'? – yuji 2012-02-18 19:05:00

+0

你的意思是autoshrink? – sch 2012-02-18 21:50:06

+0

autoresizingMask沒有工作。 – 2012-02-19 19:48:46

回答

19

我看到同樣的事情。你可以用編程方式解決它(我在viewDidLoad中做):

myLabel.adjustsFontSizeToFitWidth = YES; 
+0

這樣做的竅門!雖然我用'[myLabel setAdjustsFontSizeToFitWidth:YES];'因爲我認爲蘋果希望我們「設置」這樣的屬性。 – 2012-02-26 23:24:57

+0

我有同樣的問題,之前提交了一個雷達(http://openradar.appspot.com/10984259)。這個問題似乎已經在XCode 4.3.1中得到了解決。 – 2012-03-08 07:05:56

+1

這根本不適用於我...... – 2012-06-11 14:25:30

0

我有完全相反的問題!我更新到Xcode 4.3,現在它會自動縮小我的tableview單元格中的文本,當我希望它們用橢圓截斷它們時。我瀏覽了故事板並修改了可能與此有關的所有選項,但它拒絕按照我的意願去做。太令人沮喪了。

編輯...

嘗試並重新創建Xcode中什麼是對我做,因爲這是發生了什麼,你的相反。突出顯示故事板中用於tableview的原型單元格,然後單擊「Title」和「Subtitle」字樣。您可以在屬性檢查器中找到AutoShrinking屬性,我想您可以通過取消選中此框並重新構建您的應用程序來解決您的問題。很奇怪Xcode升級會如何導致這種情況。它也導致我的應用程序表現得有點奇怪(即在模擬器中運行時意外崩潰),但幾次清理和重建解決了這個問題。希望你能解決這個問題,因爲我知道這對我來說同樣令人沮喪!

+0

Ooops,我想我解決了我自己的問題。我必須在Xcode中將Autoshrinking打開,並將最小大小設置爲我的文本大小。這太糟糕了。 – Dave 2012-02-20 16:47:54

+0

呃,Xcode 4.3的繁瑣並不是爲我自己解決。每次構建它時,都會取消選擇自動修復功能,如果我對它進行硬編碼,它將忽略它...很高興您的工作正在進行中! – 2012-02-25 18:42:16

+0

看到同樣的事情。無論我做什麼,都可以採用自動縮水... – midas06 2012-02-29 06:04:37

0

它只是對我做了同樣的事情。所有的自動關機都被關閉。放回字體大小並將其自動縮小並不實際。

我必須按照JLundell的建議以編程方式修復它。

3

我有同樣的問題。這是修復,我將它添加到實用程序方法中,因爲我的項目中有超過100個xib,並且需要修復一大堆xib。很棒。從viewDidLoad中

+(void)fixLabels:(UIView *)theView{ 

    for(UIView *v in [theView allSubViews]) 
    { 
     if([v isKindOfClass:[UILabel class]]) 
     { 
      if(!((UILabel*)v).adjustsFontSizeToFitWidth){ 
       ((UILabel*)v).adjustsFontSizeToFitWidth=YES; 
       // NSLog(@"fixed %@", theView); 
      } 
     } 
    } 
} 

然後調用fixLabels爲具有不屬於自動收縮UILabels任何觀點:

一下添加到Utility.m:

// UIView+viewRecursion.h 
@interface UIView (viewRecursion) 
- (NSMutableArray*) allSubViews; 
@end 
// UIView+viewRecursion.m 
@implementation UIView (viewRecursion) 
- (NSMutableArray*)allSubViews 
{ 
    NSMutableArray *arr=[[NSMutableArray alloc] init]; 
    [arr addObject:self]; 
    for (UIView *subview in self.subviews) 
    { 
     [arr addObjectsFromArray:(NSArray*)[subview allSubViews]]; 
    } 
    return arr; 
} 
@end 

[Utility fixLabels:self.view]; 
0

Xcode 4.3不考慮adjustsFontSizeToFitWidth屬性的Interface Builder設置。

您可以通過以JLundell建議的編程方式設置屬性值來修復它。

myLabel.adjustsFontSizeToFitWidth = YES; 

它已經在4.3.1