呈现小Modal VIewController Objective C

Posted

技术标签:

【中文标题】呈现小Modal VIewController Objective C【英文标题】:Present small ModalVIewController ObjectiveC 【发布时间】:2016-07-09 20:33:18 【问题描述】:

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

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

谢谢,这正是我想要的:

【问题讨论】:

【参考方案1】:

如果你想在另一个视图控制器上显示一个视图控制器,最简单的方法是将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 一起导致:

【讨论】:

我试过这样的代码,但我得到全屏通知VC。我知道怎么了,也许我错过了 NotificationVC.xib 中的任何内容 没错,这应该是一个全屏的 ViewController,但是主视图是半透明的,所以你可以看到后面的视图,中间的图像视图不透明,因此你得到了想要的效果.那有意义吗?如有必要,我很乐意进一步澄清。

以上是关于呈现小Modal VIewController Objective C的主要内容,如果未能解决你的问题,请参考以下文章

Translucent Modal ViewController - 如何处理旋转

将 Modal UINavigationController 展开到另一个 ViewController

Storyboard Modal ViewController 不会关闭;已经尝试了一切

是否存在 Modal ViewController: 将视图控制器添加到堆栈中?

我的 viewController 没有正确显示

呈现小viewController