当视图处理或动画时,视图背景缩小
问题描述:
我无法找到为什么我第一次移动子视图或为其设置动画时,子视图的背景缩小到子视图的左上角。 (不知道它是否在技术上属于'子视图',因为我拖到我的主视图上的对象被标记为'视图')当视图处理或动画时,视图背景缩小
对于本示例,我将提供一个动画示例,以便您可以看到发生了什么更轻松。
这里是我的.h条目(2个目的,一个按钮和一个视图)
@property (weak, nonatomic) IBOutlet UIView *floatPad;
- (IBAction)toggleButton:(UIButton *)sender;
对于此示例总览视图位于(20,800)的尺寸的(728, 186)。我还在界面生成器中将背景设置为浅灰色以显示更好的结果。
该按钮在屏幕上和屏幕之间切换视图,通过屏幕底部滑动(通过动画代码)。
这里是我的.m项(1 BOOL,1的UIColor,加上“viewDidLoad中”和“切换按钮”的代码)
@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点空间。如果你在视图内部放置一个对象,它不会移动,这告诉我视图不缩小,只有背景。在第一个“切换”按钮后按钮按预期运行。我添加了背景更改颜色代码,以显示第一个切换从不调用动画代码,显然背景在第二个切换之前不会更改颜色。
答
我不知道发生这种事情的频率如何,但是我可以在看到这个问题数周后回答我自己的问题。如果你看一下我描述添加视图的顶部,我给它的尺寸(728,186)。但是我自己的动画代码缩小了盒子(584,145)。
至于为什么第一次打的切换按钮没有改变的背景下,这是因为我相信我的“floatPadVisible”标志和语法设置为YES:
floatPadVisible:YES;
时,实际上它不是,也是第一次通过该方法,它通过不可见的代码运行。
你知道,有一天我要编写一种与Xcode完全不兼容的语言,叫做Xcode,只是为了让人们失望。在此之前,将[Xcode]标签限制为与IDE相关的问题,而不是与语言相关的问题。 – CodaFi 2013-03-23 16:10:21
我现在明白了。它确实感到多余。所以xcode标签只针对有关应用程序本身的问题或疑问。 – tcison 2013-03-23 18:55:12