Я плохо знаком с разработкой iPhone, и я в настоящее время работаю над простым приложением для RSS-ридера. Проблема, которую я имею, состоит в том, что я должен изменить местоположение textLabel
в UITableViewCells
. Я попробовал setFrame
или setCenter
но это ничего не делает. Делает любой знает то, что я должен сделать в tableView:cellForRowAtIndexPath:
метод, чтобы изменить местоположение textLabel
наверху ячейки (x = 0, y = 0)?
Спасибо
PS: UITableViewCell
ссылается названной переменной cell
. Я попробовал [cell setFrame:CGRectMake(0, 0, 320, 20)]
без успеха.
Вы можете создать подкласс для UITableViewCell и настроить рамку de textLabel. См. этот ответ: Выравнивание меток в UITableViewCell. У меня все работает отлично.
Это мой подкласс
#import "UITableViewCellFixed.h"
@implementation UITableViewCellFixed
- (void) layoutSubviews {
[super layoutSubviews];
self.textLabel.frame = CGRectMake(0, 0, 320, 20);
}
@end
Это мой UITableViewControllerClass:
UITableViewCellFixed *cell = (UITableViewCellFixed *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCellFixed alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
Кажется, я решил свою проблему. Вот код на тот случай, если кто-то столкнется с той же проблемой:
UILabel *ttitle = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 20)] autorelease];
ttitle.font = [UIFont boldSystemFontOfSize:13];
ttitle.textColor = [UIColor blackColor];
ttitle.textAlignment = UITextAlignmentLeft;
[ttitle setText:[[stories objectAtIndex: storyIndex] objectForKey: @"title"]];
[cell.contentView addSubview:ttitle];
Идея состоит в том, чтобы создать свой собственный объект метки, потому что textLabel автоматически позиционируется и не может быть перемещен.
Ура.