我正在尝试在iOS中制作过渡动画,其中视图或视图控制器似乎会扩展以填充整个屏幕,然后在完成时缩回到其原来的位置.我不确定这种类型的过渡是否正式调用,但您可以在iPad的YouTube应用中看到一个示例.当您点击网格上的某个搜索结果缩略图时,它会从缩略图中展开,然后在您返回搜索时收缩回缩略图.
我对此有两个方面感兴趣:
在一个视图和另一个视图之间转换时,您将如何产生这种效果?换句话说,如果视图A占据屏幕的某个区域,您将如何将其转换为占据整个屏幕的视图B,反之亦然?
你会如何以这种方式过渡到模态视图?换句话说,如果UIViewController C当前正在显示并包含占据屏幕一部分的视图D,那么如何使它看起来像视图D变成UIViewController E,它在C上呈现模态?
编辑:我正在添加赏金,看看是否能让这个问题更加热爱.
编辑:我有一些源代码可以做到这一点,Anomie的想法就像一个魅力,有一些改进.我首先尝试动画模态控制器的视图(E),但它没有产生感觉像你正在放大屏幕的效果,因为它没有扩展(C)中缩略图视图周围的所有东西.因此,我尝试动画原始控制器的视图(C),但重绘它为一个生涩的动画,像背景纹理之类的东西没有正确缩放.所以我最后做的是拍摄原始视图控制器(C)的图像并在模态视图(E)内缩放.这种方法比我原来的方法复杂得多,但看起来确实不错!我认为iOS也必须如何进行内部转换.无论如何,这是我在UIViewController上作为类别编写的代码.
的UIViewController + Transitions.h:
#import <Foundation/Foundation.h>
@interface UIViewController (Transitions)
// make a transition that looks like a modal view
// is expanding from a subview
- (void)expandView:(UIView *)sourceView
toModalViewController:(UIViewController *)modalViewController;
// make a transition that looks like the current modal view
// is shrinking into a subview
- (void)dismissModalViewControllerToView:(UIView *)view;
@end
Run Code Online (Sandbox Code Playgroud)
的UIViewController + Transitions.m:
#import "UIViewController+Transitions.h"
@implementation UIViewController (Transitions)
// capture a screen-sized image of the receiver
- (UIImageView *)imageViewFromScreen { …
Run Code Online (Sandbox Code Playgroud) 我正在尝试优化iOS应用程序的内存使用量,我想看看应用程序的总内存使用量在代码中的特定点.我以为我应该能够设置断点,使用Activity Monitor配置应用程序,并查看每个断点捕获时的内存使用情况.但是当我运行Instruments时,似乎断点不再停止执行,因此很难确切知道内存使用何时发生变化.
是否可以同时使用断点和仪器?如果没有,是否有一种聪明的方法可以编写一些代码,以便在特定事件发生时将标记插入到仪器时间轴中?