iOS Facebook纸质popover视图控制器
正如标题所说,我正在寻找一种实现视图控制器的方法,它以与Facebook报纸的通知/消息/朋友请求视图控制器相同的方式呈现自己 我想要的是有一个图标(就像Facebook报纸上的图标),当用户点击它时,一个新的视图控制器会以几乎和报纸上一样的动画方式弹出(因为我认为人们很难再进一步润色这个动画了)。我希望它是一个视图控制器,因为它将进行一些提升,我希望将其分离,这意味着不欢迎使用iOS Facebook纸质popover视图控制器,ios,iphone,objective-c,facebook,uiviewcontroller,Ios,Iphone,Objective C,Facebook,Uiviewcontroller,正如标题所说,我正在寻找一种实现视图控制器的方法,它以与Facebook报纸的通知/消息/朋友请求视图控制器相同的方式呈现自己 我想要的是有一个图标(就像Facebook报纸上的图标),当用户点击它时,一个新的视图控制器会以几乎和报纸上一样的动画方式弹出(因为我认为人们很难再进一步润色这个动画了)。我希望它是一个视图控制器,因为它将进行一些提升,我希望将其分离,这意味着不欢迎使用UIView实例 关于如何滚动这样的视图控制器有什么线索吗? 我猜父控制器(显示所有新闻的控制器)实际上是一个UICo
UIView
实例
关于如何滚动这样的视图控制器有什么线索吗?我猜父控制器(显示所有新闻的控制器)实际上是一个
UIContainerViewController
,它将子控制器添加到自身中,然后以特定的方式设置其视图的动画
我已经设法找到了类似的东西,那就是。这看起来像是朝着正确的方向射击,但需要一些额外的工作和抛光才能达到同样的效果和平滑度。如果需要的话,我可能会更深入地研究它,但我希望你们可以有更好的东西供你们使用。:)
任何线索都将不胜感激
附言:如果你对我的意思有任何理解上的问题(比如如果你没看过论文),请在评论中告诉我,我也会在帖子中看到一些图片
编辑:
如果回放足够多次,整个动画就足够清晰可见。我不是在追求图标的反弹(至少没有那么多),而是对过渡本身更感兴趣。如果需要的话,我仍然可以提供更多的照片。好的,我做了一个类似的事情,你可以看到一个日历“弹出式”视图 这并不完全是你想要的,但我认为你会得到一场非常接近的比赛 我在为其制作日历的应用程序中使用了一个故事板,所以我也将使用故事板来编写这篇文章 首先要避免的是,应用程序的日历部分使用全新的ViewController来管理它。这样做可以做几件事
mypoOverviewController
的视图控制器,并将其添加到情节提要中。现在,从要从中显示的任何视图控制器创建一个模态序列。如果你想要的话,甚至可以按一下按钮。使segue模式。并使其没有动画
这将立即从您当前的VC切换到MyPopoverVC
现在,在.h文件中需要几个属性
@property (nonatomic, strong) UIView *backgroundView;
@property (nonatomic, assign) CGPoint startPoint;
现在,在调用它的VC中,您需要像这样的prepareForSegue方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"myPopoverSegue"]) {
MyPopoverVC *controller = segue.destinationViewController;
controller.backgroundView = [self.view snapshotViewAfterScreenUpdates:NO];
controller.startPoint = // the position of the button that was pressed
}
}
- (void)viewDidLoad
{
...
self.theViewYouWantToBounce.frame = CGRectMake(self.startPoint.x, self.startPoint.y, 0, 0);
...
}
现在设置popover视图控制器
首先,确保backgroundView属性已添加到self.view
[self.view insertSubview:self.backgroundView atIndex:0];
还要确保背景视图与屏幕大小相同
或者你也可以在故事板上这样做。这样做的目的是获取上一个视图控制器的视图快照,并将其放在新视图控制器的后面。这让它看起来像是旧VC上出现的popover,而实际上它只是一个屏幕截图。没有这个新的VC将有一个纯黑色的背景(或任何颜色你设置)
起点如何
在视图中,load是否做了类似的事情
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"myPopoverSegue"]) {
MyPopoverVC *controller = segue.destinationViewController;
controller.backgroundView = [self.view snapshotViewAfterScreenUpdates:NO];
controller.startPoint = // the position of the button that was pressed
}
}
- (void)viewDidLoad
{
...
self.theViewYouWantToBounce.frame = CGRectMake(self.startPoint.x, self.startPoint.y, 0, 0);
...
}
这将把它放在起始点(按钮所在的位置),并使其大小为零
我假设你已经关闭了自动布局,以保持简单
好的,现在。在视图中显示
- (void)viewDidAppear
{
[super viewDidAppear];
[UIView animateWithDuration:0.5
delay:0.0
usingSpringDamping:1.0
initialSpringVelocity:1.0
options:0
animations:^{
self.theViewYouWantToBounce.frame = CGRectMake(//the end frame of the view
}
completion:nil];
}
您必须调整设置(阻尼、初始速度),但这将使视图从起点处的当前大小(0,0)反弹到您希望的大小和位置
要隐藏它,只需在关闭视图之前将动画恢复为零大小
我希望这是有道理的
要记住的事情
希望这有所帮助。Afaik纸质应用程序仅在美国提供。“你最好用手机或别的什么东西录下来。”福格迈斯特同意。我编辑了这篇文章以更好地反映这一特点。好的,现在就写点东西。你看到我的答案了吗?你没有评论、投票或接受它。Thanks@Fogmeister看到它,我很高兴你花时间写了它。我只是没有时间来实现它,所以说不出它是否适合我的需要。一旦我实施它,我就会接受它。我保证。