3

我有一个分享页面的简介,其中包括点击一个分享按钮和一个显示在顶部的带有一些分享功能的模式视图。

我的问题是我希望模态视图的背景是半透明的,因此显示下面的视图。我已经设置了模态层的背景属性,当模态层出现时,下面的层是短暂可见的 - 看起来完全符合我的要求 - 但是一旦封面转换完成,背景视图就会被隐藏 - 有什么办法吗这?

(顺便用IOS7)

干杯

更新- @Tommaso Resti 帮助我尝试解决这个问题 - 解释我到目前为止所做的事情 - 我的主故事板包含一个未链接的 uiview,其标识符为“ShareScreenView” - 我想将其添加到我的 mainView 中单击按钮时的透明模式。我已将按钮链接为 IBAction,并将以下内容添加到我的方法中 -

- (IBAction)shareBtn:(id)sender {


    NSLog(@"clicked");



    /* Create your view off the screen (bottom) */

    /* NEW EDIT */
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone"
                                                         bundle: nil];
    UIViewController *myModalController = [mainStoryboard instantiateViewControllerWithIdentifier:@"ShareScreenView"];

    [myModalController.view setFrame:CGRectMake(0, 568, 320, 568)];
 // [myModalController.view setFrame: CGRectMake(0, [[UIScreen mainScreen].bounds.size.height], [[UIScreen mainScreen].bounds.size.width], [[UIScreen mainScreen].bounds.size.height])];


 /* Animate it from the bottom */
 [UIView animateWithDuration:.5 animations:^{
    CGAffineTransform move = CGAffineTransformMakeTranslation(0, -[UIScreen mainScreen].bounds.size.height);
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    myModalController.view.transform = move;   /* UPDATED HERE */
     NSLog(@"Atrying");
 } completion:^(BOOL finished) {
    NSLog(@"Adid try");
    if(finished) {
        NSLog(@"Animation completed");
    }
 }];

} 

但是我在线上遇到错误-

[myModalController.view setFrame: CGRectMake(0, [[UIScreen mainScreen].bounds.size.height], [[UIScreen mainScreen].bounds.size.width], [[UIScreen mainScreen].bounds.size.height])] ;

它只是用指向高度的箭头声明“预期标识符”(见下面的屏幕截图)

在此处输入图像描述

所以我尝试按如下方式添加属性 -

 [myModalController.view setFrame:CGRectMake(0, 568, 320, 568)];

现在没有错误 - 但没有任何反应,也没有错误..

4

3 回答 3

3

我建议使用你自己的方法:

像这样的东西:

/* Create your view off the screen (bottom) */

/* NEW EDIT */
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                     bundle: nil];
UIViewController *myModalController = [mainStoryboard instantiateViewControllerWithIdentifier:@"MyModalController"];
[myModalController.view setFrame: CGRectMake(0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
[self.view addSubview: myModalController.view]; /* UPDATED HERE! */


/* Animate it from the bottom */
[UIView animateWithDuration:.5 animations:^{
    CGAffineTransform move = CGAffineTransformMakeTranslation(0, -[UIScreen mainScreen].bounds.size.height);
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    myModalController.view.transform = move;   /* UPDATED HERE */
} completion:^(BOOL finished) {
    if(finished) {
        NSLog(@"Animation completed");
    }
}];

而不是用这个动画移除:

/* Reset animation */
[UIView animateWithDuration:.5 animations:^{
    CGAffineTransform reset = CGAffineTransformIdentity;
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    myModalController.view.transform = reset;  /* UPDATED HERE */
} completion:^(BOOL finished) {
    if(finished) {
        NSLog(@"Reset completed");
        [myModalController.view removeFromSuperview];
    }
}];

--- 已编辑 --- 抱歉,我忘了在 myViewController 之后添加“.view”。我从不尝试我的代码......我的错;)

示例已更新!

于 2013-11-15T10:11:56.370 回答
0

您可以创建一个视图,从底部滑入,然后使视图半透明。

于 2013-11-15T10:16:57.597 回答
0

您可以使用 View Container 创建自己的 ModalViewController 并像 @Tommaso Resti 说的那样做动画

于 2013-11-15T10:30:54.070 回答