目前小 ModalViewController ObjectiveC

Present small ModalVIewController ObjectiveC

我的任务是在一些现有的 VC 中添加新的简单通知模式视图。 充其量,我想实现一个在当前视图上显示通知VC的功能。

有很多类似的问题,但它们对我不起作用或需要委托、转场等。

谢谢,这就是我想要的:

如果您想在另一个视图控制器上显示一个视图控制器,最简单的方法是将 modalPresentationStyle 设置为 UIModalPresentationOverFullScreenUIModalPresentationOverCurrentContext。如果呈现的视图控制器的视图具有 alpha 小于 1 的背景颜色,则呈现的视图控制器的视图将显示出来。使用您的示例,在您的呈现视图控制器中,您可以这样说:

- (void) presentNotificationViewController
{
    NotificationViewController *notificationVC = [[NotificationViewController alloc] init];
    notificationVC.titleText = @"My Notification Title";
    notificationVC.image = image;
    notificationVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
    notificationVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentViewController:notificationVC animated:YES completion:nil];
}

那么你的 NotificationViewController.m 可以是这样的:

#import "NotificationViewController.h"

@interface NotificationViewController ()
@property (weak, nonatomic) IBOutlet UIView *contentView;
@property (weak, nonatomic) IBOutlet UILabel *notificationTitleLabel;
@property (weak, nonatomic) IBOutlet UIButton *dismissButton;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation NotificationViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.60];

    self.contentView.layer.cornerRadius = 3.0;

    self.notificationTitleLabel.text = self.titleText;

    self.imageView.image = self.image;

    self.dismissButton.layer.cornerRadius = 3.0;
    self.dismissButton.layer.borderColor = [UIColor blackColor].CGColor;
    self.dismissButton.layer.borderWidth = 2.0;
    // etc.

}


- (IBAction)dismissPressed:(UIButton *)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

或者任何你想要的。请注意,我将视图的背景颜色设置为半透明,而我有一个不透明的白色 contentView 作为实际的警报视图。 contentView 有一个标签、按钮和图像视图作为子视图。这段代码连同我在其中设置 UI 约束的 .xib,导致: