【问题标题】:Extending a view to the left side, animated将视图扩展到左侧,动画
【发布时间】:2010-06-15 15:11:06
【问题描述】:

我有一个想要使用动画在左侧扩展的视图。除左侧外的所有边框都应保持不变,因此视图的 x 位置和宽度会发生变化。

我使用这个代码:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:5.0];
self.frame = CGRectMake(self.frame.origin.x-100,
                        self.frame.origin.y,
                        self.frame.size.width+100,
                        self.frame.size.height);
[UIView commitAnimations];

如果我运行这段代码,视图的宽度会立即设置为新值,然后视图会移动到新的 x 点,但为什么呢?我该如何改变这种行为?

感谢您的想法!

【问题讨论】:

    标签: objective-c iphone core-animation quartz-graphics


    【解决方案1】:

    您的代码对我来说运行良好。你是如何运行它的?调用 -setFrame 是您正在做的事情的正确选择。这是我的自定义视图的样子:

    #import "TestView.h"
    
    @implementation TestView
    
    - (id)initWithFrame:(CGRect)frame {
        if ((self = [super initWithFrame:frame])) {
            // Initialization code
        }
        return self;
    }
    
    - (void)dealloc {
        [super dealloc];
    }
    
    - (void)go;
    {
      [UIView beginAnimations:nil context:nil];
      [UIView setAnimationDuration:5.0];
      self.frame = CGRectMake(self.frame.origin.x-100,
                                     self.frame.origin.y,
                                     self.frame.size.width+100,
                                     self.frame.size.height);
      [UIView commitAnimations];
    }
    
    @end
    

    我从我的视图控制器中创建一个 TestView 类型的插座并连接它并在 IB 中设置它的类型。然后我创建一个按钮,其处理程序调用 [customView go];似乎工作正常。

    【讨论】:

    • 我在按下按钮后开始我的代码,所以所有的视图初始化应该已经完成​​了。
    • 我现在尝试使用 frame 属性仅更改视图的大小,但没有发生动画。如果我尝试使用 bounds 属性更改大小,视图会移动……这不是有点奇怪吗?
    • 这是我做的一个演示项目。看看你能不能找到你所做的和我所拥有的区别:cimgf.com/files/GrowViewLeft.zip
    【解决方案2】:

    好的,我现在让它穿起来了。问题是我的视图是一个 UIButton,我用setBackground:forState:setTitle:forState: 设置了标题和背景。 似乎视图的背景不是可动画的。我使用的解决方法是使用 UIImageView 添加自己的背景。

    感谢您的回复!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多