ios - 呈现小型 Modal VIewController Objective C

标签 ios objective-c xcode modalviewcontroller

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

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

谢谢,这就是我想要的:

enter image description here

最佳答案

如果您想在另一个 View Controller 上显示一个 View Controller ,最简单的方法是将 modalPresentationStyle 设置为 UIModalPresentationOverFullScreenUIModalPresentationOverCurrentContext。如果呈现的 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 一起导致:

enter image description here

关于ios - 呈现小型 Modal VIewController Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38286118/

相关文章:

ios - 检查以编程方式创建的 UIView 是否可见

iphone - Cocos2d CCSpirte runAction问题

ios - SpriteKit 和 Tiles - 处理非正方形的图 block

iphone - 没有要编译的体系结构(ARCHS=arm6 arm7,VALID_ARCHS=armv7)

ios - Swizzling - 在 Objective-C iOS 中撤消方法选择器 swizzling

ios - 使用 Storyboard 或 xib 文件开发应用程序

ios - 如何在导航栏内添加带有范围栏的搜索栏,其中导航栏自动增加其高度并显示空格栏

ios - iOS 5 更新后,我的 iPad 应用程序图标变白了

ios - UITableview 滚动没有正确响应?

ios - 获取 UIScrollView 中 View 的 y 位置