Czy odpowiedź byłaby tak prosta, jak pierwszy nazywając [super layoutSubviews]
wewnątrz layoutSubviews
metody Twojego UITableViewCell
podklas?
Oto mój kod.
Najpierw stworzyć UITextField
i dodać go do contentView
w metodzie initWithStyle:
:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
inputField = [[UITextField alloc] initWithFrame:CGRectZero];
[self.contentView addSubview:inputField];
inputField.borderStyle = UITextBorderStyleLine;
[inputField release];
}
return self;
}
Następnie w layoutSubviews, mam to:
-(void)layoutSubviews
{
inputField.frame = CGRectMake(5, 5, 100, 20);
}
Z tym kodem, tekst pole jest 5 pikseli od lewej strony ekranu, co jest oczywiście 5 pikseli po lewej stronie komórki tabeli, gdy jest w trybie grupowym. Innymi słowy: ZEWNĄTRZ komórki widoku tabeli. Nie dobrze.
użyć tego kodu i inputField
umieszcza 5px na prawo od celi, tak jak ma to być:
-(void)layoutSubviews
{
[super layoutSubviews]; // the magic line
inputField.frame = CGRectMake(5, 5, 100, 20);
}
mógłbym całkowicie niezrozumiany problem miałaś, choć!
Erik
Problemem jest UITableView w trybie zgrupowane odcina część komórek (na boki, aby odsłonić tła i również okrągła naroża górnej i dolnej komórki przekroju). – jbrennan
Tak, to jest problem. –
Po kilku dalszych testach masz rację, że komórki widoku tabeli nie zostaną przekazane we właściwym rozmiarze w drawRect. Alternatywnym podejściem jest ustawienie niestandardowego tła dla standardowej komórki UITableViewCell i wykonanie tam wszystkich swoich rysunków. Otrzymujesz komórkę o odpowiedniej szerokości, ale musisz samodzielnie narysować zaokrąglone górne i dolne rogi. –