我正在使用带有2个不同布局布局管理器的循环器视图,它是LinearLayoutManager和GridLayoutManager.
我想在从一个布局管理器切换到另一个管理器时为项目设置动画.有没有办法达到这个效果?
我脑子里弹出的接近方法是覆盖setLayoutManger方法并使用fromLayoutManager捕获项目的BEFORE状态,并使用toLayoutManager计算项目的AFTER状态,并将这些项目设置到位.
我没有深入研究这些代码,所以任何人都可以告诉我这种方法是可以实现的还是更好地实现这一目标?
#import "AppDelegate.h"
#import <MapKit/MapKit.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
[self setWindow:[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]];
[self.window makeKeyAndVisible];
UIViewController *vc = [[UIViewController alloc] init];
self.window.rootViewController = vc;
vc.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
MKMapView *map = [[MKMapView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
map.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[vc.view addSubview:map];
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
要查看问题,请运行上面的代码并旋转设备.您将体验旋转动画的显着延迟.
如果您连接iOS8 iPad并运行模拟器,您将收到以下警告:
崩溃!0x15dd7980
错误/SourceCache/VectorKit/VectorKit-992.16/GeoGL/GeoGL/GLCoreContext.cpp 1237:帧缓冲不完整,附件不完整
有谁知道如何解决这个问题?
class CustomFilter : CIFilter {
var inputImage: CIImage?
var inputRadius: CGFloat = 100.0
override var name: String {
return "CustomFilter"
}
override func setDefaults() {
self.inputRadius = 100.0
}
override var outputImage: CIImage? {
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
实例化上述过滤器将导致应用程序引发异常
CoreImage`-[CIFilter _crashed_when_dealloc_called_setValue_nil_forKey_probably_because_the_subclass_already_released_it:]:
有人知道如何解决吗?
android ×1
animation ×1
autoresize ×1
cifilter ×1
framebuffer ×1
ios8 ×1
layout ×1
mapkit ×1
swift ×1