在调用 removeFromSuperview 的时候,当前视图会突然消失,这样显得很不友好。这段代码能够让视图慢慢消失。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
//
// UIView+JTRemoveAnimated.h
//
// Created by james on 9/1/11.
//
@interface
UIView
(JTRemoveAnimated)
- (
void
)removeFromSuperviewAnimated;
@end
//
// UIView+JTRemoveAnimated.m
//
// Created by james on 9/1/11.
//
#import <quartzcore quartzcore.h="">
@implementation
UIView
(JTRemoveAnimated)
// remove static analyser warnings
#ifndef __clang_analyzer__
- (
void
)animationDidStop:(
NSString
*)animationID
finished
:(
NSNumber
*)finished
context
:(
void
*)context {
if
([animationID
isEqualToString
:
@"fadeout"
]) {
// Restore the opacity
CGFloat
originalOpacity = [(
NSNumber
*)context
floatValue
];
self
.layer
.opacity
= originalOpacity;
[
self
removeFromSuperview
];
[(
NSNumber
*)context
release
];
}
}
- (
void
)removeFromSuperviewAnimated {
[
UIView
beginAnimations
:
@"fadeout"
context
:[[
NSNumber
numberWithFloat
:
self
.layer
.opacity
]
retain
]];
[
UIView
setAnimationDuration
:
0
.3
];
[
UIView
setAnimationDidStopSelector
:
@selector
(animationDidStop:finished:context:)];
[
UIView
setAnimationDelegate
:
self
];
self
.layer
.opacity
=
0
;
[
UIView
commitAnimations
];
}
#endif
@end
</quartzcore>
|