我的任务是在一些现有的 VC 中添加新的简单通知模态视图。 充其量,我想实现一个在当前 View 上显示 notificationVC 的功能。
有很多类似的问题,但它们对我不起作用或需要委托(delegate)、转场等。
谢谢,这就是我想要的:
最佳答案
如果您想在另一个 View Controller 上显示一个 View Controller ,最简单的方法是将 modalPresentationStyle
设置为 UIModalPresentationOverFullScreen
或 UIModalPresentationOverCurrentContext
。如果呈现的 View Controller 的 View 具有 alpha 小于 1 的背景颜色,则呈现的 View Controller 的 View 将显示出来。使用您的示例,在您的呈现 View Controller 中,您可以这样说:
- (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
或者任何你想要的。请注意,我将 View 的背景颜色设置为半透明,而我有一个不透明的白色 contentView 作为实际的警报 View 。 contentView
有标签、按钮和 ImageView 作为 subview 。此代码与我在其中设置带约束的 UI 的 .xib 一起导致:
关于ios - 呈现小型 Modal VIewController Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38286118/