呈现小Modal VIewController Objective C
Posted
技术标签:
【中文标题】呈现小Modal VIewController Objective C【英文标题】:Present small ModalVIewController ObjectiveC 【发布时间】:2016-07-09 20:33:18 【问题描述】:我的任务是在一些现有的 VC 中添加新的简单通知模式视图。 充其量,我想实现一个在当前视图上显示 notificationVC 的函数。
有很多类似的问题,但它们对我不起作用或需要委托、segues 等。
谢谢,这正是我想要的:
【问题讨论】:
【参考方案1】:如果你想在另一个视图控制器上显示一个视图控制器,最简单的方法是将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。我知道怎么了,也许我错过了 NotificationVC.xib 中的任何内容 没错,这应该是一个全屏的 ViewController,但是主视图是半透明的,所以你可以看到后面的视图,中间的图像视图不透明,因此你得到了想要的效果.那有意义吗?如有必要,我很乐意进一步澄清。以上是关于呈现小Modal VIewController Objective C的主要内容,如果未能解决你的问题,请参考以下文章
Translucent Modal ViewController - 如何处理旋转
将 Modal UINavigationController 展开到另一个 ViewController
Storyboard Modal ViewController 不会关闭;已经尝试了一切