J'ai un peu de code qui crée une cellule de tableau avec un curseur. C'est assez simple et cela s'adapte bien à la taille de l'iPhone. Je l'ai un peu rendu anonyme ici :
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];
Bien sûr, cela est dimensionné de manière incorrecte pour l'iPad. Alors ma première pensée a été de définir la propriété autoresizingMask
sur UIViewAutoresizingFlexibleWidth
. Problème résolu, non? Non. Maintenant, sur l'iPhone, la largeur du contenu du curseur plus des images est inférieure à 280 et il n'atteint donc pas tout à fait la fin - il se retrouve à environ 20 pixels de moins.
Sur l'iPad, c'est la même chose - la largeur du UISlider
se redimensionne automatiquement à environ 20 pixels de moins que la fin de la cellule.
Peut-être que le drapeau de redimensionnement automatique tient compte de l'accessoryView
inexistant de la cellule? J'ai essayé de le définir explicitement sur nil
, mais je pense qu'il est par défaut à nil
, donc rien n'a changé.
J'aimerais que le contenu de cette cellule se redimensionne automatiquement pour être la largeur "complète" de la cellule, indépendamment de l'appareil et de l'orientation. Existe-t-il un moyen facile de faire cela?