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

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

5 ответов


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

myLabel.adjustsFontSizeToFitWidth = YES;

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

добавить в программу.м:

// 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];

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

редактировать...

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


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

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


Xcode 4.3 не соблюдает настройки построителя интерфейса для свойства adjustsFontSizeToFitWidth.

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

myLabel.adjustsFontSizeToFitWidth = YES;

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