【问题标题】:View background shrinks when view is addressed or animated当视图被寻址或动画时,视图背景缩小
【发布时间】:2013-03-23 15:26:05
【问题描述】:

我无法找到为什么我的子视图的背景在我第一次移动它或为其设置动画时会向子视图的左上角缩小。 (不确定它在技术上是否是“子视图”,因为我拖到主视图的对象被标记为“视图”)

对于这个示例,我将提供一个动画示例,以便您可以更轻松地了解发生了什么。

这是我的 .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 点空间。如果你把一个对象放在视图中,它不会移动,这告诉我视图没有缩小,只有背景。在第一次“切换”之后,按钮按预期运行。我添加了背景更改颜色代码,以表明第一个切换从不调用动画代码,这从背景在第二个切换之前不会改变颜色这一事实就可以看出。

【问题讨论】:

  • 你知道,有一天我要编写一种与 Xcode 完全不兼容的语言,称为 Xcode,只是为了惹恼人们。在此之前,将 [Xcode] 标签限制为与 IDE 相关的问题,而不是与语言相关的问题。
  • 我现在明白了。确实觉得多余。所以 xcode 标记仅用于有关应用程序本身的问题或问题。

标签: ios animation uiview


【解决方案1】:

我不知道这种情况多久发生一次,但我可以在关注这个问题数周后回答我自己的问题。如果你看我描述添加视图的顶部,我给它尺寸(728、186)。但我自己的动画代码将框缩小到 (584, 145)。

至于为什么第一次点击切换按钮不改变背景,那是因为我相信我用语法将'floatPadVisible'标志设置为YES:

floatPadVisible:YES;

实际上不是第一次通过该方法时,它会运行不可见的代码。

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多