如何实现这种segue / view外观?

时间:2015-07-20 15:16:39

标签: ios swift

App Store screenshot 在App Store中,将显示多个应用程序图标,如此屏幕截图所示。

App Store screenshot with app icon tapped 在点击其中一个应用程序图标时,我们会看到一个视图,向我们显示应用程序详细信息,同时调暗视图的其余部分。点击视图外的任何地方,将其解雇。

我如何达到这个效果?

根据我的理解,它不是具有模态或弹出窗口的视图控制器。它既不是Show或Show Detail segue。

我猜他们是通过

来做的
  1. 创建someView
  2. 在屏幕1上覆盖黑色全屏视图,不透明度为50%
  3. 设置someView.hidden = false并将其放置在半透明图层上方
  4. 添加一个点按手势识别器'dismissSomeView',它会再次隐藏视图并删除半透明图层
  5. 如果我错了,请纠正我,如果有更好/ Apple认可的方式来完成它。

    我试图在iPhone上实现此效果,支持iOS 8和9。

3 个答案:

答案 0 :(得分:2)

在我发布问题之后,我很快找到了最佳答案。

通过以下方式实现上述效果:

  1. App Store主视图被视为呈现视图控制器

  2. 单个应用程序详细信息显示在具有自己的视图控制器的视图中。这是呈现的视图控制器。 segue被选为Present Modally。在其自己的prepareForSegue:方法中,呈现视图控制器设置此视图控制器的转换委托(如下所述),并将modalPresentationStyle设置为.Custom

  3. 展示的视图控制器有一个转换委托对象,符合UIViewControllerTransitioningDelegate协议。

  4. 此委托具有指向表示控制器和动画制作者对象的方法。 (此步骤的详细信息可在下面找到)。

  5. 自定义动画对象是符合UIViewControllerAnimatedTransitioning协议的类。它确定呈现的视图控制器在视图内外的动画效果。

  6. 自定义演示控制器UIPresentationController类)是确定所呈现的视图控制器的大小和位置的控制器。它还负责呈现调光铬/视图。可以选择为调光视图设置动画以及显示的视图控制器的过渡动画。

  7. 第4步详情: 相当冗长的方法名称分别为presentationControllerForPresentedViewController(_ presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController?animationControllerForPresentedController(_ presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning?

    这个链接解释得比我可能做得更好: https://www.shinobicontrols.com/blog/ios8-day-by-day-day-24-presentation-controllers

    对于使用演示控制器实现类似效果的视频教程,请观看去年WWDC上视频“A Look Inside Presentation Controllers”的后半部分:https://developer.apple.com/videos/wwdc/2014/

答案 1 :(得分:1)

在中心构建一个白色背景颜色的白色CustomedView。

构建一个黑色背景的UIView,大约透明70%。

将customedView添加到maskView,将maskView添加到self.view。

MyCustomedView *topView = [[MyCustomedView alloc] initWithFrame:CGRectMake(50, 150, self.view.frame.size.width - 100, self.view.frame.size.height - 300)];
[maskView addSubview:topView];

UIView *maskView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
maskView.backgroundColor = [UIColor blackColor];
maskView.alpha = 0.75;
[self.view addSubview:maskView];

当你单击UICollectionViewController中的一个图标时,它会做类似的事情。并传递一些参数,如名称,描述。

这只是我的想法,你可以用你的想法。希望这可以帮到你。

答案 2 :(得分:1)

使用以下参数在故事板中创建一个segue:

SEGUE:以模态呈现

演示文稿:表单

转换:默认

动画检查

注意:此效果可在Ipad中实现。要在iphone中有类似的效果,你需要覆盖特征集合。