Avec IOS 14, est apparut UIColorPickerViewController qui permet d'avoir une interface système pour la sélection d'une couleur. Il est étonnant que ce controller ne soit pas arriver avant sachant qu'il existait sur les machines NextStep, avant le retour de Steve Jobs chez Apple, il y a plus de vingt ans...
Jusqu'à lors, j'utilisais (et j'utilise toujours pour IOS13) un controller personnel dans mes applications. Il était simple et faisait le taf. Mais le controller système est vraiment pas mal.
On doit donc mettre une couleur par défaut. Heureusement l'attribut selectedColor est en lecture et écriture... Voici donc le bon code pour initialiser le controller.
if (@available(iOS 14.0, *)) {
colorPicker = [UIColorPickerViewController new];
colorPicker.delegate = self;
colorPicker.supportsAlpha = NO;
colorPicker.selectedColor = button.BackgroundColor;
colorPicker.modalPresentationStyle = UIModalPresentationPopover;
colorPicker.popoverPresentationController.sourceView = button;
colorPicker.popoverPresentationController.sourceRect = button.bounds;
[self presentViewController:colorPicker animated:YES completion:nil];
return;
}
On ne peut donc pas utiliser le supportsAlpha sans initialiser aussi selectedColor avec une couleur opaque. Attention aussi à Button.backgroundColor qui pourrait être une couleur transparente, pour être plus sûr de la couleur, on pourrait forcer l'opacité avec un :
colorPicker.selectedColor = [buttonColor.backgroundColor colorWithAlphaComponent:1];
Commentaires