在App Store中,将显示多个应用程序图标,如此屏幕截图所示。
在点击其中一个应用程序图标时,我们会看到一个视图,向我们显示应用程序详细信息,同时调暗视图的其余部分。点击视图外的任何地方,将其解雇。
我如何达到这个效果?
根据我的理解,它不是具有模态或弹出窗口的视图控制器。它既不是Show或Show Detail segue。
我猜他们是通过
来做的someView
someView.hidden = false
并将其放置在半透明图层上方如果我错了,请纠正我,如果有更好/ Apple认可的方式来完成它。
我试图在iPhone上实现此效果,支持iOS 8和9。
答案 0 :(得分:2)
在我发布问题之后,我很快找到了最佳答案。
通过以下方式实现上述效果:
App Store主视图被视为呈现视图控制器。
单个应用程序详细信息显示在具有自己的视图控制器的视图中。这是呈现的视图控制器。 segue被选为Present Modally
。在其自己的prepareForSegue:
方法中,呈现视图控制器设置此视图控制器的转换委托(如下所述),并将modalPresentationStyle
设置为.Custom
。
展示的视图控制器有一个转换委托对象,符合UIViewControllerTransitioningDelegate
协议。
此委托具有指向表示控制器和动画制作者对象的方法。 (此步骤的详细信息可在下面找到)。
自定义动画对象是符合UIViewControllerAnimatedTransitioning
协议的类。它确定呈现的视图控制器在视图内外的动画效果。
自定义演示控制器(UIPresentationController
类)是确定所呈现的视图控制器的大小和位置的控制器。它还负责呈现调光铬/视图。可以选择为调光视图设置动画以及显示的视图控制器的过渡动画。
第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中有类似的效果,你需要覆盖特征集合。