我无法找到为什么我的子视图的背景在第一次移动或动画时会缩小到子视图的左上角。 (不确定它是否在技术上是一个'子视图',因为我拖到我的主视图的对象被标记为'视图')
对于这个例子,我将提供一个动画示例,以便您可以更轻松地查看正在发生的事情。
这是我的.h条目(2个对象,一个按钮和一个视图)
@property (weak, nonatomic) IBOutlet UIView *floatPad;
- (IBAction)toggleButton:(UIButton *)sender;
对于此示例(iPad),视图位于(20,800),大小为(728,186)。我还在Interface Builder中将背景设置为浅灰色,以显示更好的效果。
按钮可以在屏幕上打开和关闭视图,通过屏幕底部关闭和打开(通过动画代码)。
以下是我的.m条目(1 BOOL,1 UIColor,加上'viewDidLoad'和'toggleButton'代码)
@interface ViewController ()
@property (assign, nonatomic) BOOL floatPadVisible;
@property (retain, nonatomic) UIColor* redBackground;
@end
@implementation ViewController
@synthesize floatPad;
@synthesize floatPadVisible;
@synthesize redBackground;
- (void)viewDidLoad {
floatPadVisible:YES;
redBackground = [UIColor colorWithRed:179/255.0 green:1/255.0 blue:54/255.0 alpha:1.0];
[super viewDidLoad];
}
- (IBAction)toggleButton:(UIButton *)sender {
if (floatPadVisible) { //is floatPadVisible BOOL set to YES
[UIView beginAnimations:@"floatPad" context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationDelegate:self];
[floatPad setFrame:CGRectMake(20, 1004, 584, 145)];
[floatPad setBackgroundColor:redBackground];
[UIView commitAnimations];
floatPadVisible = NO;
}
else {
[UIView beginAnimations:@"floatPad" context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationDelegate:self];
[floatPad setFrame:CGRectMake(20, 800, 584, 145)];
[UIView commitAnimations];
floatPadVisible = YES;
}
}
问题是,第一次按下切换按钮时,视图不会移动,只有背景会缩小。我说收缩,因为你仍然可以看到视图左侧的20点空间。如果你把一个对象放在视图中,它就不会移动,这告诉我视图没有缩小,只有背景。在第一次“切换”之后,按钮按预期运行。我添加了背景更改颜色代码,以显示第一个切换从不调用动画代码,这显然是背景在第二个切换之前不会改变颜色。
答案 0 :(得分:0)
我不知道这种情况经常发生,但我可以在盯着这个问题几周后回答我自己的问题。如果你看一下我描述添加的视图的顶部,我给它尺寸(728,186)。但我自己的动画代码将框缩小为(584,145)。
至于为什么第一次点击切换按钮不会改变背景,这是因为我认为我使用语法将'floatPadVisible'标志设置为YES:
floatPadVisible:YES;
实际上它并非第一次通过该方法时,它会通过不可见的代码运行。