2011-01-09 6 views
0

Я пытаюсь пропустить ширину ячейки, в которой я работаю, когда создаю свои миниатюры (это приложение очень похоже на приложение для фотографий на iphone).Определение размера UITableViewCell

Это то, что у меня есть:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 
int photoWidth = self.frame.size.width/4; 
    thumbnail1 = [[ThumbnailButton alloc] initWithFrame:CGRectMake(0, 0, photoWidth, 40) ]; 
    thumbnail2 = [[ThumbnailButton alloc] initWithFrame:CGRectMake(photoWidth, 0, photoWidth, 40) ]; 
    thumbnail3 = [[ThumbnailButton alloc] initWithFrame:CGRectMake(photoWidth * 2, 0, photoWidth, 40) ]; 
    thumbnail4 = [[ThumbnailButton alloc] initWithFrame:CGRectMake(photoWidth * 3, 0, photoWidth, 40) ]; 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     [self.contentView addSubview:thumbnail1]; 
     [self.contentView addSubview:thumbnail2]; 
     [self.contentView addSubview:thumbnail3]; 
     [self.contentView addSubview:thumbnail4]; 
    } 
    return self; 
} 

Моя основная проблема заключается в:

int photoWidth = self.frame.size.width/4; 

Я не могу понять высоту и ширину ячейки таблицы.

Любая помощь будет оценена, Приветствия, Стефан

+1

не ваш вопрос на самом деле, но здесь есть утечка памяти. Добавьте '[... autorelease]' ко всем этим операторам 'alloc'. – mvds

+0

Спасибо, что поймали это! Я все еще довольно новичок в Objective-C –

+0

Также на этом этапе вы пытаетесь создать сетку без сомнения, и в этом случае не делайте этого так. Используйте существующий зрелый код. «AQGridView» был бы здесь очень хорош, все, что вам нужно было бы сделать, - это вставить изображение в ячейку, и если количество ячеек * ширина вашей ячейки не будет равномерно распределяться по ширине вашего супервизора, просто отрегулируйте смещение содержимого поэтому все выстраивается правильно. Очень проста в использовании. – jer

ответ

1

На данный момент ячейку таблицы, которая находится в процессе создания не может знать, насколько она будет, если вы не скажете ему. Он также не имеет ссылки на таблицу, к которой он будет добавлен, поэтому нет способа.

Вы можете использовать только некоторые размеры, установить соответствующие маски для изменения размера и при добавлении ячейки определить размер кадра с tableView.frame.size.

+0

Не могли бы вы подробнее рассказать о «настройке соответствующих масок для изменения размера и при добавлении ячейки, определить кадр с размерами из tableView.frame.size» –

+0

Просто выберите размер (желательно: правильный размер) и сделайте ячейку таблицы совершенной для этого размера. Затем позже, когда ячейка настроена и готова к возврату из 'tableView: cellForRowAtIndexPath:', установите истинный размер. Конечно, вы можете получить истинный размер из таблицы. Потому что вы, вероятно, добавите table-view-cell в табличный вид. Правильно? – mvds

+0

относительно маски изменения размера, прочитайте на сайте apple.com: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html * «При создании представления это важно присвоить соответствующее значение свойству autoresizingMask, чтобы обеспечить правильное изменение размера. "* – mvds

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