Ich mache benutzerdefinierte Popover von Unterklasse UIPopoverBackgroundView (mit dieser tutorial) und präsentiert es mithilfe von UIPopoverController. Leider, sobald ich die benutzerdefinierte popoverBackgroundViewClass spezifiziere, verschwindet der native abgeblendete Hintergrund. Gibt es eine Möglichkeit, den abgeblendeten Hintergrund bei Verwendung von benutzerdefinierten UIPopoverBackgroundView zu lassen? Irgendeine andere Lösung, die ich verwenden kann, um natives Verhalten zu simulieren?Hinzufügen von abgeblendetem Hintergrund zu einer benutzerdefinierten UIPopoverBackgroundView
Antwort
Nicht sicher, warum dies abgelehnt wurde, ist es eine gute Frage, denn wenn Sie eine benutzerdefinierte UIPopoverBackgroundView implementieren, wird der abgeblendete Hintergrund nicht festgelegt. Bei der Untersuchung dieses Problems habe ich festgestellt, dass es am besten ist, es selbst zu setzen!
Kurz bevor ich die Popover-Ansicht erstelle, erstelle ich eine "Maskenansicht", die vor dem Popover zur Ansicht hinzugefügt wird. Dieser Code enthält einen schönen verblassen in der Tat auch:
self.customPopoverMaskView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
self.customPopoverMaskView.backgroundColor = [UIColor blackColor];
self.customPopoverMaskView.alpha = 0.3f;
[UIView transitionWithView:self.view
duration:0.3
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^ {
[self.view addSubview:self.customPopoverMaskView];
}
completion:nil];
Und die Ansicht zu entfernen, stecken Sie diese in die Methode (n), die die popover Ansicht verschwindenden Griff:
[UIView transitionWithView:self.view
duration:0.3
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^ {
[self.customPopoverMaskView removeFromSuperview];
}
completion:nil];
funktioniert gut für mich . Glückliche Kodierung!
Aaron
Alles, was Sie brauchen, ist neben Code in Initwithframe hinzu: Methode der Implementierung von UIPopoverBackgroundView.
UIView *dimView = [[UIView alloc] initWithFrame:CGRectMake(0 - self.frame.origin.x,
0 - self.frame.origin.y,
[UIScreen mainScreen].bounds.size.width,
[UIScreen mainScreen].bounds.size.height)];
dimView.backgroundColor = [UIColor blackColor];
dimView.alpha = 0.15;
dimView.userInteractionEnabled = NO;
[self addSubview:dimView];
Es funktioniert wie die Apple-Standardimplementierung.
Bitte schreiben Sie Ihren Code hier – malex
Ich habe meine Frage aktualisiert. Ich habe den Link zum Tutorial hinzugefügt, das ich verwende. – sash
Nicht verstanden, warum die Frage abstimmen? Es geht nicht darum, UIPopoverBackgroundView abzuleiten oder warum es nicht funktioniert. Die Frage ist: Ist es möglich, einen abgeblendeten Hintergrund aus der Box heraus zu setzen, wenn Sie UIPopoverBackgroundView ableiten? – sash