我有不同的UIViewController,它包含从视图中出现和消失的组件(带有像translation movment这样的动画)。 我希望有一个类可以减少每个UIViewController中的代码量,并且可以在XIB文件中进行配置。
所以我的XIB文件包含:
以下是XCode中的内容:
我创建了一个AppearingController(也是一个UIViewController)。它控制使组件显示或消失的动画。它有3个IBOutlet属性:
IBOutlet UIView * vVisible;
IBOutlet UIView * vHidden;
IBOutlet UIView * v;
一个公共方法(只是在vVisible的rect和vHidden视图的rect之间运行动画):
-(void) showVisible:(BOOL)visible {
CGRect frameDst = self.vVisible.frame;
if(!self.visible) frameDst = self.vHidden.frame;
CGPoint p = CGPointMake(CGRectGetMidX(frameDst), CGRectGetMidY(frameDst));
self.currentPosition = p;
CABasicAnimation *frameTranslation = [CABasicAnimation animationWithKeyPath:@"position"];
frameTranslation.toValue = [NSValue valueWithCGPoint:p];
frameTranslation.duration = 0.40;
frameTranslation.repeatCount = 1;
frameTranslation.removedOnCompletion = NO;
frameTranslation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
frameTranslation.cumulative = NO;
frameTranslation.additive = NO;
frameTranslation.delegate = self;
[self.v addAnimation:frameTranslation forKey:@"position"];
}
因此,在我的UIViewController代码中,我只需要一些代码:
并且......有效。 但我不太满意,因为我觉得它有点扭曲和沉重。因为:
这种方法似乎对你有好处吗?
你怎么能改善它?
你是否有一些模式用于实现同样的目标?
我很感兴趣
感谢。
答案 0 :(得分:0)
这看起来还算不错!您可以通过多种方式对此进行编码。但是当谈到这个具体的例子时,如果你想要一个更好的编码方法并不重要。当你开展一个更大的项目时,有必要设计你的数据结构和编码方案,以便你能够以最大的时间约束和优化的方式完成它!
例如,在一个需要处理100个图像的更大的项目中,您可以创建一个动画类并相应地对它们进行子类化,并引用它们或继承它们,以便您的方法合乎逻辑且节省时间。希望你明白了!