7
votes

Changer l'apparence de l'UISTEPPER

UISTEPPER est très pratique mais je veux modifier l'apparence de celui-ci, j'ai besoin d'avoir une icône personnalisée non pas le plus et moins et que je veux aussi changer la couleur du contrôle. Comment puis-je atteindre cet objectif? Merci d'avance!


1 commentaires

Ce n'est pas possible. Veuillez déposer un bogue demandant cette fonctionnalité: bugrepor.apple.com


6 Réponses :


2
votes

Vous ne pouvez pas le faire actuellement. Vous devrez écrire un objet sur mesure uicontrol code> si vous souhaitez personnaliser les icônes.

du Référence de la classe UISTEPPER , les seuls paramètres que vous pouvez modifier sont P>

  continuous  property
  autorepeat  property
  wraps  property
  minimumValue  property
  maximumValue  property
  stepValue  property

  value  property


2 commentaires

Modification de l'arrière-plan ne fonctionnera pas, en raison des décisions de la manière dont uispper a été implémenté. Le questionneur doit déposer un bogue: bugReporrer.apple.com


Je vois que ça suce, de toute façon est là une alternative open source? Merci pour la réponse au fait.



5
votes

Ceci fonctionne:

[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"highlighted.png"]  forState:UIControlStateHighlighted];
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"disabled.png"]  forState:UIControlStateDisabled];


3 commentaires

Belle trouvaille. Toute façon de définir différentes images pour les commandes gauche et droite?


@Andreistoleru Je suppose que vous ciblez iOS5 et que vous voulez dire les images + incrément et - décrémentation. Pas sans sous-classement ni ajout d'une catégorie sur UISTEPPER. Mais vous pouvez personnaliser le diviseur avec [[UImageView apparenceHOCEUnée: [classe UISTEPPER], Nil] Settimage: [UiImage Imagenamed: @ "Divider.png"]];


ApparenceMensedIn a été obsolète dans iOS 9 et il n'est plus recommandé d'être utilisé, au cas où les personnes de l'avenir arrivent ici.



15
votes

comme de iOS 6.0 Vous pouvez utiliser - (uiImage *) décryptementImageForState: (UICONTROLSTATE) Etat et - (UIIMAGE *) IncrémentImageForState: (UICONTROLSTATE) Etat Pour changer le étiquettes sur le contrôle UISTEPPER.

Ceci fonctionne pour iOS 6.0:

[_ STEPER SETDECREMENTIMAGE: [UIIMAGE Imagenamed: @ "décrémenter"] Forstat: uicontrolstatenormal];


1 commentaires

Fonctionne bien. Cela devrait être la réponse acceptée si sur iOS> = 6.



0
votes

Vous pouvez toujours passer à travers les uIViews et deviner aussi. Quoi qu'il en soit, c'est mon code, qui ne répond pas directement à la question, mais c'est une sorte de soie.

@implementation UIStepper (Util)

- (void) fixForIos7 {
    if (!IS_IOS7)
        return;
    for (UIView *view in self.subviews) {
        view.backgroundColor = [UIColor whiteColor];
        UIButton *button = (UIButton*)view;
        [button setTintColor:[UIColor blackColor]];
    }
}

@end


0 commentaires

2
votes

Voici une solution qui fonctionne pour moi.

Plate-forme iOS 7.1 P>

[stepper setBackgroundImage:[UIImage new] forState:UIControlStateNormal];
[stepper setDividerImage:[UIImage new] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal];


0 commentaires

1
votes

Voici la version SWIFT 4.0:

extension UIImage {
  func resize(targetSize: CGSize) -> UIImage {
        return UIGraphicsImageRenderer(size:targetSize).image { _ in
            self.draw(in: CGRect(origin: .zero, size: targetSize))
        }
    }
}


0 commentaires