目前小 ModalViewController ObjectiveC
Present small ModalVIewController ObjectiveC
我的任务是在一些现有的 VC 中添加新的简单通知模式视图。
充其量,我想实现一个在当前视图上显示通知VC的功能。
有很多类似的问题,但它们对我不起作用或需要委托、转场等。
谢谢,这就是我想要的:
如果您想在另一个视图控制器上显示一个视图控制器,最简单的方法是将 modalPresentationStyle
设置为 UIModalPresentationOverFullScreen
或 UIModalPresentationOverCurrentContext
。如果呈现的视图控制器的视图具有 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,导致:
我的任务是在一些现有的 VC 中添加新的简单通知模式视图。 充其量,我想实现一个在当前视图上显示通知VC的功能。
有很多类似的问题,但它们对我不起作用或需要委托、转场等。
谢谢,这就是我想要的:
如果您想在另一个视图控制器上显示一个视图控制器,最简单的方法是将 modalPresentationStyle
设置为 UIModalPresentationOverFullScreen
或 UIModalPresentationOverCurrentContext
。如果呈现的视图控制器的视图具有 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,导致: