. Bunu, sen canlandırabilirsiniz varsa Şimdi
@implementation ViewController
@synthesize container;
- (void)viewDidLoad {
[super viewDidLoad];
container = [[UIView alloc] initWithFrame:self.view.frame];
[self.view addSubview:container];
// add all views later to this insted of self.view
// continue viewDidLoad setup
}
: viewController.view
'ın çerçevesini değiştirmek için hiçbir olasılığı olduğundan
Yani, kabın bir tür küçük Böyle Subview eklemek gerekecek şöyle küçülen davranışı: (önceki sürümleri için alternatif çerçeveler vardır)
[UIView animateWithDuration:.5 animations:^{
container.frame = CGRectMake(10, 17, self.view.frame.size.width-20, self.view.frame.size.height-34);
}];
Tamam, iOS 7 için geliştiriyoruz varsayalım, bu yüzden burada bazı yeni API'ler faydalanmak gerekir. Şimdi WWDC UIView
'un, bir UIView
nesnesini döndüren bir resizableSnapshotViewFromRect:(CGRect) afterScreenUpdates:(BOOL) withCapInsets:(UIEdgeInsets)
yöntemi var. Eğer görünüm yönetimini yeniden yazmak istemiyorsanız
[UIView animateWithDuration:.5 animations:^{
container.frame = CGRectMake(10, 17, self.view.frame.size.width-20, self.view.frame.size.height-34);
} completion:^(BOOL finished) {
UIView *viewToBlur = [self.view resizableSnapshotViewFromRect:container.frame afterScreenUpdates:YES withCapInsets:UIEdgeInsetsZero];
}];
, ayrıca ilk, bu şekilde ana görünümde bir fotoğrafını çekmek kap olarak ayarlayın ve sonra yalnızca görüntüyü canlandırabilirsiniz. Ama unutmayın, yakalanan görüntü ile etkileşime giremezsiniz.
Bunu aldığınızda, iki kategori dosyasını this repo'dan indirebilirsiniz (Bunlar WWDC'den geliyor, bu nedenle doğrudan Apple'dan!). Temel olarak, ne yaptıklarını, applyDarkEffect
kullanacağımız UIView
sınıfına yeni ve güzel yöntemler ekliyorlar. Bunu test etmedim, belki başka bir yöntem ihtiyaçlarınızı daha iyi karşılar.
Neyse biz bloğun içine uygulanması ve belki de bulanık kaplamasını görüntülemek için UIImageView
eklerseniz, bu gibi görünmelidir:
[UIView animateWithDuration:.5 animations:^{
container.frame = CGRectMake(10, 17, self.view.frame.size.width-20, self.view.frame.size.height-34);
} completion:^(BOOL finished) {
UIView *viewToBlur = [self.view resizableSnapshotViewFromRect:container.frame afterScreenUpdates:YES withCapInsets:UIEdgeInsetsZero];
UIImage *image = [viewToBlur applyDarkEffect];
UIImageView *blurredView = [[UIImageView alloc] initWithFrame:self.view.frame];
[self.view addSubview:blurredView];
// optionally also animate this, to achieve an even smoother effect
[blurredView setImage:image];
}];
Daha sonra üstüne senin SecondViewController
'ın görünümü ekleyebilirsiniz yığın, böylece temsilci yöntemleri çağrılacak. Gelen hesap görünümünün sıçrama etkisi, yeni UIView animasyon yöntemi animateWithDuration:(NSTimeInterval) delay:(NSTimeInterval) usingSpringWithDamping:(CGFloat) initialSpringVelocity:(CGFloat) options:(UIViewAnimationOptions) animations:^(void)animations completion:^(BOOL finished)completion
(documentation'da daha fazla)
ile gerçekleştirilebilir. Umarım bu, projenizde size yardımcı olacaktır.
GIF animasyonu için hangi aracı kullanıyorsunuz? –
, ikisini “birleştirmeyi” deneyebilirsiniz: https://github.com/autresphere/ASDepthModal https://www.cocoacontrols.com/controls/namodalsheet veya https://www.cocoacontrols.com/controls/mzformsheetcontroller – TonyMkenu