0
我希望能夠從位置A淡出UIView,並在位置B 處同時淡入,同時。這可能與iOS?是否可以使用衰落將ui元素從一個位置移動到另一個位置?
我希望能夠從位置A淡出UIView,並在位置B 處同時淡入,同時。這可能與iOS?是否可以使用衰落將ui元素從一個位置移動到另一個位置?
一種方法是創建視圖的圖像,把它放在屏幕(在圖像視圖)在實際的視圖,設置視圖的alpha爲0 ,設置其框架(或調整佈局約束)以將其放置在新的位置,然後啓動淡出圖像的動畫,並淡入實際視圖。
像這樣的東西應該工作:
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController()
@property (weak,nonatomic) IBOutlet UIView *fadingView;
@property (weak,nonatomic) IBOutlet NSLayoutConstraint *topCon;
@property (strong,nonatomic) UIImageView *iv;
@end
@implementation ViewController
-(IBAction)moveView:(id)sender {
UIImage *viewimage = [self imageWithView:self.fadingView];
self.iv = [[UIImageView alloc] initWithFrame:self.fadingView.frame];
self.iv.image = viewimage;
[self.view addSubview:self.iv];
self.fadingView.alpha = 0;
self.topCon.constant = 200; // topCon is IBOutlet to the top constraint to the superview
[UIView animateWithDuration:1 animations:^{
self.fadingView.alpha = 1;
self.iv.alpha = 0;
} completion:^(BOOL finished) {
[self.iv removeFromSuperview];
}];
}
- (UIImage *)imageWithView:(UIView *)view {
UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.bounds.size.width, view.bounds.size.height), view.opaque, [[UIScreen mainScreen] scale]);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
是沿着這些路線的東西:
[UIView animateWithDuration:0.25 animations:^{
self.viewA.frame = CGRectMake... // middle point
self.viewA.alpha = 0.0f;
}completion:^ (BOOL finished)
{
[UIView animateWithDuration:0.25 animations:^{
self.viewA.frame = CGRectMake... // final point
self.viewA.alpha = 1.0f;
}];
}];
但這最終只是淡出了出來。我需要另一個動畫來淡化它。 – circuitlego
你可以連鎖動畫,所以你有淡出,直到X位置和淡入淡出,直到最後destionation。 – Peres
檢查我的編輯.. – Peres