2014-11-29 4 views
0

У меня есть более старый код iOS, который включает в себя общий пользовательский Composite Subview, полученный от UITableViewCell, который переопределяет setFrame и использует contentStretch для достижения размера. Это общий пользовательский класс Table View Cell, который я могу использовать для отображения любого содержимого, которое я хочу в строке таблицы (UITableViewController).iOS contentStretch устарел, как растянуть ячейку таблицы?

contentStretch устарел какое-то время (iOS6), но я ничего не вижу о том, как переписать код, не основанный на изображении, который использует contentStretch. Вот то, что я сейчас:

- (void)setFrame:(CGRect)frame 
{ 
    [super setFrame:frame]; 

    [UIView setAnimationsEnabled:NO]; 
    CGSize contentSize = cellContentView.bounds.size; 
    cellContentView.contentStretch = CGRectMake(225.0/contentSize.width, 0.0, (contentSize.width - 260.0)/contentSize.width, 1.0); 
    [UIView setAnimationsEnabled:YES]; 
} 

Update:

Оказывается, что я могу избавиться от моего setFrame переопределения и просто установить автоматическое изменение размера маски в моем initWithStyle так:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { 
     cellContentView = [[CompositeSubviewBasedResortCellContentView alloc] initWithFrame:CGRectInset(self.contentView.bounds, 0.0, 1.0) cell:self]; 
     cellContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
     cellContentView.contentMode = UIViewContentModeRedraw; 
     [self.contentView addSubview:cellContentView]; 
    } 

    return self; 
} 
+0

Какое содержимое вы растягиваете? – Lefteris

+0

Это UITableViewCell, поэтому строка в таблице в основном. Я не думаю, что содержание ячейки имеет большое значение здесь, это общий пользовательский класс класса ячеек, чтобы я мог поместить все, что захочу. –

ответ

2

вы все еще можете использовать AUTORESIZE маски

view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

Если вставить это в, г ight нажмите UIViewAutoresizingFlexibleWidth и нажмите «Перейти к определению», вы увидите другие доступные опции, довольно прямолинейные оттуда.

+0

Спасибо, это полезно. Кажется, я могу полностью избавиться от моего вызова setFrame! –

Смежные вопросы