我遇到了麻烦CGAffineTransformMakeScale
。我正在显示一个视图并使用下面的代码隐藏它。这是第一次完美地显示和解雇。但之后它不再出现。在我打印日志后,它实际上已经超出了屏幕 coorediantes。
我在解雇中应用重置转换,使用CGAffineTransformIdentity
但仍然无法正常工作。
- (void) showWithAnimation
{
float mheight = customView.frame.size.height;
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
if(!keyWindow)
{
NSArray *windows = [UIApplication sharedApplication].windows;
if(windows.count > 0)
keyWindow = [windows lastObject];
keyWindow = [windows objectAtIndex:0];
}
UIView *containerView = [[keyWindow subviews] objectAtIndex:0];
CGRect frame = customView.frame;
frame.origin.y = -mheight;
customView.frame = frame;
NSLog(@"customView - %@", customView);
[containerView addSubview:customView];
customView.alpha = 0;
customView.transform = CGAffineTransformMakeScale(0.01, 0.01);
customView.center = CGPointMake((ScreenBounds().size.width / 2) - 24, ScreenBounds().size.height / 2);
NSLog(@"customView After applying transfrom - %@", customView);
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationCurveEaseInOut
animations:^{
customView.transform = CGAffineTransformMakeScale(1, 1);
customView.alpha = 1;
}
completion:^(BOOL finished){
self.isVisible = YES;
NSLog(@"customView Displayed .....");
NSLog(@"customView - %@", customView);
}];
}
- (void)dismissWithAnimation
{
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationCurveEaseInOut
animations:^{
customView.transform = CGAffineTransformMakeScale(0.01, 0.01);
customView.alpha = 0;
}
completion:^(BOOL finished)
{
self.isVisible = NO;
**//Edit: I tried applying CGAffineTransformIdentity at here**
[customView removeFromSuperview];
}];
}
以下是日志,
--> 1st time logs
customView -> <UIView: 0x205a1e50; frame = (24 -150; 272 150); layer = <CALayer: 0x205a1eb0>>
customView After applying transfrom - <UIView: 0x205a1e50; frame = (134.64 283.25; 2.72 1.5); transform = [0.01, 0, 0, 0.01, 0, 0]; alpha = 0; layer = <CALayer: 0x205a1eb0>>
customView Displayed .....
customView - <UIView: 0x205a1e50; frame = (0 209; 272 150); layer = <CALayer: 0x205a1eb0>>
--> 2nd time logs
customView -> <UIView: 0x205a1e50; frame = (24 -204; 272 204); transform = [0.01, 0, 0, 0.01, 0, 0]; alpha = 0; animations = { transform=<CABasicAnimation: 0x2072c620>; opacity=<CABasicAnimation: 0x2072df20>; }; layer = <CALayer: 0x205a1eb0>>
customView After applying transfrom - <UIView: 0x205a1e50; frame = (3.03984e-06 182; 272 204); transform = [0.01, 0, 0, 0.01, 0, 0]; alpha = 0; animations = { transform=<CABasicAnimation: 0x2072c620>; opacity=<CABasicAnimation:
0x2072df20>; }; layer = <CALayer: 0x205a1eb0>>
customView Displayed .....
customView - <UIView: 0x205a1e50; frame = (-13464 -9916; 27200 20400); layer = <CALayer: 0x205a1eb0>>
这是怎么回事。