在iPhone上显示弹出透明窗口的最佳方法?

Cin*_*lia 4 iphone objective-c uiviewcontroller modalviewcontroller ios

我正在Xcode 4.6中构建一个iOS 6 iPhone应用程序,我想知道实现以下类型的弹出窗口的最佳方法:

PopoverScreenshot

具体来说,右侧的iPhone截图,如果用户点击主窗口中的UIView或部分透明的弹出窗口,会出现更详细的信息 - 例如肖像照片和文本数据 - 但原始视图(这里的照片集)仍然可见,计时器/计数器继续在该视图中滴答作响.

我认为这将是一个可能的解决方案iPhone模态查看较小的屏幕,但它不适合我.上面没有显示的是取消按钮,我也打算将其放入popover中,以便用户可以返回到下面的视图.当计时器到期时,详细视图也会消失.

我应该使用presentModalViewController和演示者/演示方案,还是使用与故事板segue的父子视图关系,或者我应该使用loadNibNamed,还是某种黑客来克服iPhone显示非全屏模式的限制视图?它将覆盖屏幕的大部分,但我想确保下面的视图是可见的并且仍然是活动的,因为它向不在弹出框中的用户提供信息(计时器等).用户不需要与下面的屏幕进行交互,但我希望它部分可见.

我在我的主故事板中将弹出视图设计为单独的视图控制器,而不是作为xib文件.连接和出口由接口构建器到我的代码形成,称为ProfileViewController.

警告:我的术语可能不正确且不准确.弹出窗口或弹出窗口可以是UIView,UIViewController,UIWindow,或者以编程方式解决问题的最佳方法.我并不认为它是某种小部件类型,只要功能反映了我正在寻找的东西.

提前感谢您的建议!

Vai*_*ran 16

你想实现这个目标吗?

在此输入图像描述

以下是viewControllers另外一个不同的两个.vc2childViewControllervc1transparent背景.在你的情况下,你可以UILabelbackgroundColor black和放置堆栈的顶部alpha = 0.5.

所有事件vc2都会发生vc2.m.在图像上单击使用此代码:

- (IBAction)imageClick 
{
    vc2 *viewController = [[vc2 alloc]init];
    [self addChildViewController:viewController];
    viewController.view.frame = self.view.frame;
    [self.view addSubview:viewController.view];
    viewController.view.alpha = 0;
    [viewController didMoveToParentViewController:self];

    [UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^
     {
         viewController.view.alpha = 1;
     }
                     completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

并在vc2.m此基础上viewDidLoad使这viewController透明.

self.view.backgroundColor = [UIColor clearColor];
self.view.opaque = YES;
Run Code Online (Sandbox Code Playgroud)

制作透明视图viewController将使您的代码清晰,因为所有代码都vc2将在一个单独的类中.

编辑

所以,做一两件事,首先添加UIView到您xib这将是一个圆角的边框和框架将是你想按你的截图.

对于圆形边框,您可以使用它category.backgroundColorUIView将是clearColor:

- (void)setRoundedBorder:(float) radius borderWidth:(float)borderWidth color:(UIColor*)color
{
    CALayer * l = [self layer];
    [l setMasksToBounds:YES];
    [l setCornerRadius:radius];
    // You can even add a border
    [l setBorderWidth:borderWidth];
    [l setBorderColor:[color CGColor]];
}
Run Code Online (Sandbox Code Playgroud)

现在放一个UILabel/UIView/UIImage框架等于UIView上面,alpha为0.5,黑色背景颜色.您可以直接从中执行此操作xib.无需通过代码设置框架.

然后开始将其他控件放入其中 UIView


Kal*_*esh 7

试试这个

// create a new view
  UIView *viewPopup=[[UIView alloc]init];
  [viewPopup setBackgroundColor:[UIColor blackColor]];
  viewPopup.alpha=0.6f;

 // add into window
 AppDelegate *appdelgateobj=(AppDelegate *)[[UIApplication sharedApplication]delegate];
 [appdelgateobj.window addSubview:viewPopup];
 [appdelgateobj.window bringSubviewToFront:viewPopup];
Run Code Online (Sandbox Code Playgroud)


Dha*_*nia 5

按照以下步骤进行透明视图:

步骤1: 在此输入图像描述

第2步:

在此输入图像描述

  • 无论何时你想要它Transpertview.hidden = NO:
  • 只要你不想要,那么Transpertview.hidden = YES:

可能会有所帮助.