Как заставить свойство Autoresize работать в Xcode 4.3?

Недавно я обновился до Xcode 4.3 и отключил свойство автозапуска UILabels. Я перепроверял коробки в IB и перестраивал проект, но он все еще отключает текст. Какие-либо предложения? Это известная ошибка? Есть ли способ исправить это программно.

Ответ 1

Я вижу то же самое. Вы можете обойти это программно (я делаю это в viewDidLoad):

myLabel.adjustsFontSizeToFitWidth = YES;

Ответ 2

У меня была та же проблема. Здесь исправление, я добавил его к утилитарному методу, так как у меня в моем проекте более 100 xibs, и куча их необходима для исправления. Отлично работает.

Добавьте это в 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

И это:

  +(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 из viewDidLoad для любого представления, которое имеет UILabels, которые не сжимаются автоматически:

[Utility fixLabels:self.view];

Ответ 3

У меня есть совершенно противоположная проблема! Я обновился до Xcode 4.3, и теперь он автоматически сжимает текст в ячейках tableview, когда я хочу, чтобы они усекали их с помощью эллипсов. Я прошел через раскадровку и изменил все варианты, которые могут иметь отношение к этому, но он отказывается делать то, что я хочу. Так расстраивает.

Под редакцией...

Попробуйте и заново создайте то, что Xcode делал со мной, поскольку оно обратное тому, что происходит с вами. Выделите ячейку прототипа для вашего стола в раскадровке и нажмите слова "Название" и "Субтитры". Вы можете найти свойство AutoShinking внутри инспектора атрибутов, и я полагаю, что вы можете исправить свою проблему, сняв флажок и перестроя свое приложение. Очень странно, как это может привести к обновлению Xcode. Это также привело к тому, что мое приложение немного странно (то есть неожиданно сбой при работе в симуляторе), но несколько чистых и перестроек решили это. Надеюсь, вы сможете это исправить, поскольку я знаю, что это было так же неприятно для меня!

Ответ 4

Он просто сделал то же самое для меня. Все автозапуска отключены. Отбрасывание размера шрифта и автоматическое сглаживание не работало.

Мне пришлось исправить это программно, как предположил JLundell.

Ответ 5

Xcode 4.3 не выполняет настройки интерфейса Builder для настройки свойстваFontSizeToFitWidth.

Вы можете исправить это, установив значение свойства программно, как предположил JLundell.

myLabel.adjustsFontSizeToFitWidth = YES;

Он был исправлен в 4.3.1