如何在iOS中将自定义视图放置在另一个视图之上

3
我希望在UIViewController上实现以下自定义视图。除了使用addSubview之外,有什么更好的方法可以实现它? 我之前使用过以下方法,但现在想使用更好的方法:
[self.view addSubview:NotConnected.view];

 [self.view removeFromSuperview];

在此输入图片描述

我已经使用https://github.com/wimagguc/ios-custom-alertview实现了代码。

我不想使用库,那么如何像上面的图片一样自定义一个UIViewController来覆盖另一个UIViewController呢?

- (IBAction)ContinueToPayment:(id)sender {

    PayByVC *Newpage = [[PayByVC alloc] initWithNibName:@"PayByVC" bundle:nil];
    Newpage.checkOutInfoDict=checkOutDict;
    Newpage.modalPresentationStyle   = UIModalPresentationOverCurrentContext;
    Newpage.modalTransitionStyle     = UIModalTransitionStyleCrossDissolve;
    Newpage.view.backgroundColor     = [[UIColor blackColor] colorWithAlphaComponent:.4];
    Newpage.delegate = self;
    [self presentViewController:Newpage animated:YES completion:nil];


}

我使用了以下代码从父视图中移除:

 [self dismissViewControllerAnimated:YES completion:nil];

如何在所有屏幕方向中将“按视图付费”放置在屏幕中央?

有许多自定义库可用于自定义警报:1. Popup 2. DoAlerView 3. KLCPopup 4. MKBoxInputView 希望这些能帮到你。 - NightFury
3个回答

3
使用带有“OverFullScreen”模式的Modal展示。将ViewController视图的背景设置为透明,并将自定义视图放置在其中心位置。
使用Storyboard最简单。创建一个带有自定义视图的视图控制器并将其放置在中心位置。否则,您需要调用view.addSubView(..)将自定义视图放置在中心位置并相应地创建约束条件。 要呈现此视图控制器,可以创建segue或通过代码presentViewController(...)。不要忘记将modalPresentationStyle设置为OverFullScreen
无需使用任何库。

我可以使用什么来覆盖视图,是addSubview还是presentView还是其他? - Nischal Hada
更新了答案并添加了更多细节。基本上 - 使用故事板!这将为您节省很多麻烦。 - Yariv Nissim
我已经按照上面所示的做了,并且代码已经被修改。 - Nischal Hada
这是一个不同于你最初提出的问题。在构建视图以支持多个屏幕尺寸时,您需要使用自动布局。我建议您发布另一个问题,您可以在此处发布链接以便我们帮助您。同时别忘了标记正确答案以关闭本主题。 - Yariv Nissim
一个提示 - 标记正确答案以获得积分。然后去尝试帮助其他人来提高你的分数。 - Yariv Nissim
显示剩余3条评论

1

尝试使用CRToast,我已经在我的项目中使用它了。创建一个实用程序类,在那里进行配置。

+(NSDictionary *)setupAlertWithMessage:(NSString *) message withError:(BOOL) error{
    NSDictionary *options;

    if(error){

        options = @{
                    kCRToastTextKey : message,
                    kCRToastNotificationTypeKey:@(CRToastPresentationTypePush),
                    kCRToastNotificationPresentationTypeKey:@(CRToastPresentationTypePush),
                    kCRToastTextAlignmentKey : @(NSTextAlignmentCenter),
                    kCRToastBackgroundColorKey : [UIColor colorWithRed:234/255.0 green:85/255.0 blue:72/255.0 alpha:1.0],
                    kCRToastAnimationInTypeKey : @(CRToastAnimationTypeSpring),
                    kCRToastAnimationOutTypeKey : @(CRToastAnimationTypeSpring),
                    kCRToastAnimationInDirectionKey : @(CRToastAnimationDirectionTop),
                    kCRToastAnimationOutDirectionKey : @(CRToastAnimationDirectionBottom)
                    };


    }else{
        options = @{
                    kCRToastTextKey : message,
                    kCRToastNotificationTypeKey:@(CRToastPresentationTypePush),
                    kCRToastNotificationPresentationTypeKey:@(CRToastPresentationTypePush),
                    kCRToastTextAlignmentKey : @(NSTextAlignmentCenter),
                    kCRToastBackgroundColorKey :[UIColor colorWithRed:65/255.0 green:165/255.0 blue:151/255.0 alpha:1.0],
                    kCRToastAnimationInTypeKey : @(CRToastAnimationTypeSpring),
                    kCRToastAnimationOutTypeKey : @(CRToastAnimationTypeSpring),
                    kCRToastAnimationInDirectionKey : @(CRToastAnimationDirectionTop),
                    kCRToastAnimationOutDirectionKey : @(CRToastAnimationDirectionBottom)
                    };

    }

    return options;

   }

然后在需要使用它的地方导入你的util类,然后这样使用:

[CRToastManager showNotificationWithOptions:[MyRateUtil setupAlertWithMessage:@"Alert!" withError:YES/NO]
                                    completionBlock:^{

                                    }];

你有没有想过如何实现它,而不是使用警告视图和库?你能否检查修改后的问题? - Nischal Hada
现在我想访问第一个视图函数,你认为最好的方法是什么? - Nischal Hada
我现在明白你的问题了。我最初以为你只需要一个显示警报消息的机制。我曾经需要创建一个像你展示的对话框。使用常规视图控制器并执行模态转换即可。 - Niraj Adhikari
兄弟,你有这些问题的答案吗?能帮我增加一下我的问题的赞数吗?我现在无法发布其他问题。 - Nischal Hada
我因为负面评分而无法发布问题,你能帮我解决负面评分的问题吗? - Nischal Hada

1

从iOS 7开始,无法为UIAlertView添加AddSubview。

唯一的方法是创建一个自定义的UIView子类,可以充当UIAlertView。

链接的https://github.com/wimagguc/ios-custom-alertview似乎运行良好。通过进行适当的版本检查,可以确定是否使用原生UIAlertView或CustomAlertView。


我觉得很有用,谢谢你的帮助。 - Nischal Hada
是的,可以使用nib文件进行设计。 - Vijay Masiwal
你能给我一些实现它的想法吗? - Nischal Hada
以下是使用Swift的示例:http://iphonedev.tv/blog/2014/12/15/create-an-ibdesignable-uiview-subclass-with-code-from-an-xib-file-in-xcode-6以及使用XIBs的示例:http://sebastiancelis.com/2014/06/12/using-xibs-layout-custom-views/ - Vijay Masiwal
我正在使用Nib和Objective-C。 - Nischal Hada
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接