Ho un codice che crea una cella di tabella con un cursore. È abbastanza semplice e si adatta bene all'iPhone. L'ho anonimato un po 'qui:Ridimensionamento automatico della larghezza del contenuto di UITableViewCell
UITableViewCell* cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foo"] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
CGRect contentViewFrame = cell.contentView.frame;
CGRect sliderFrame = CGRectMake(10, 0, 280, contentViewFrame.size.height);
UISlider* slider = [[UISlider alloc] initWithFrame:sliderFrame];
UIImage* minimumImage = [UIImage imageNamed:@"min.png"];
UIImage* maximumImage = [UIImage imageNamed:@"max.png"];
slider.minimumValueImage = minimumImage;
slider.maximumValueImage = maximumImage;
slider.value = 0.5f;
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
[cell.contentView addSubview:slider];
[slider release];
Naturalmente, questo è dimensionato erroneamente per l'iPad. Quindi il mio primo pensiero è stato quello di impostare la proprietà autoresizingMask
su UIViewAutoresizingFlexibleWidth
. Problema risolto, giusto? No. Ora su iPhone, la larghezza del contenuto di slider-plus-images è inferiore a 280 e quindi non va fino alla fine, ma finisce per circa 20 pixel.
Sull'iPad, la stessa cosa: la larghezza dello UISlider
viene ridimensionata automaticamente a circa 20 pixel dalla fine della cella.
Forse il flag di ridimensionamento automatico sta prestando attenzione all'inesistente accessoryView
della cella? Ho provato a impostarlo su nil
in modo esplicito, ma penso che sia nil
per impostazione predefinita, quindi non è cambiato nulla.
Mi piacerebbe che il contenuto di questa cella ridimensionasse automaticamente per essere la "piena" larghezza della cella, indipendentemente dal dispositivo e dall'orientamento. C'è un modo semplice per farlo?
Non ho impostato 'UIViewAutoresizingFlexibleRightMargin'. Puoi spiegare un po 'di più come fare questo programmaticamente? Il codice pubblicato sopra è anonimizzato ma è esattamente ciò che ho ora. –