Il m'a fallu seulement 1 jour créer ma propre alerte de vue qui regarde exactement comme Apple
- Prendre une capture d'écran d'Apple alerte de référence (tailles de police, l'espacement, la largeur)
- Créer un xib avec le titre, message, affichage personnalisé et des tables pour les boutons (Apple utilise des tables au lieu de
UIButton
maintenant, par défaut d'une cellule de tableau est assez bon). Remarque vous devez bouton 3 tableaux: deux pour les boutons gauche et droit (lorsque le nombre de boutons 2), une autre pour les autres cas (un seul bouton, ou plus de 2 boutons).
Mettre en œuvre toutes les méthodes d' UIAlertView
sur votre alerte personnalisée.
Afficher/Rejeter - vous pouvez créer un spécifique fenêtre modale pour vos alertes, mais je viens de mettre mes alertes sur le dessus de ma racine-vue-contrôleur. Inscrire vos alertes visibles d'un tableau statique. Si la première alerte/rejetant la dernière, changement de teinte de la mode de la fenêtre de votre/de-vue-contrôleur de grisé/automatique et ajouter/supprimer une gradation de vue (noir avec alpha = 0.2).
- Flous d'arrière-plan - utilisation d'Apple exemple de code (j'ai utilisé du blanc opaque)
- 3D effets dynamiques - l'utilisation d'Apple un exemple de code (5 lignes de code). Si vous voulez un effet agréable, légèrement plus grand instantané à l'étape 5 et ajouter inverse des animateurs pour alerter arrière-plan et de premier plan.
EDIT:
À la fois flous d'arrière-plan et l'effet paralax exemple de code peut être trouvé dans "iOS_RunningWithASnap" de la WWDC 2013 exemple de code
Paralax effet:
UIInterpolatingMotionEffect* xAxis = [[[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x"
type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis] autorelease];
xAxis.minimumRelativeValue = [NSNumber numberWithFloat:-10.0];
xAxis.maximumRelativeValue = [NSNumber numberWithFloat:10.0];
UIInterpolatingMotionEffect* yAxis = [[[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y"
type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis] autorelease];
yAxis.minimumRelativeValue = [NSNumber numberWithFloat:-10.0];
yAxis.maximumRelativeValue = [NSNumber numberWithFloat:10.0];
UIMotionEffectGroup *group = [[[UIMotionEffectGroup alloc] init] autorelease];
group.motionEffects = @[xAxis, yAxis];
[self addMotionEffect:group];
L'arrière-plan flou est la seule chose compliquée. Si vous pouvez utiliser une couleur opaque au lieu de cela, utiliser. Sinon, c'est beaucoup d'expérimentation. Notez également que les flous d'arrière-plan n'est pas une bonne solution lorsque l'arrière-plan est sombre.
Pour le rejeter animationg, je suis en utilisant le nouveau printemps de l'animation de la méthode:
void (^animations)() = ^{
self.alpha = 1.0f;
self.transform = CGAffineTransformIdentity;
};
self.alpha = 0.0f;
self.transform = CGAffineTransformMakeScale(0.5f, 0.5f);
[UIView animateWithDuration:0.3
delay:0.0
usingSpringWithDamping:0.7f
initialSpringVelocity:0.0f
options:UIViewAnimationOptionCurveLinear
animations:animations
completion:^(BOOL completed) {
//calling UIAlertViewDelegate method
}];