【问题标题】:My animation won't start我的动画无法启动
【发布时间】:2013-01-14 22:50:17
【问题描述】:

当我点击一个按钮时,我已经完成了这段代码来启动动画,当我点击按钮时应该改变按钮的内容并开始动画,但它只会改变按钮的内容?我的代码有什么问题吗?

@synthesize SwishImage;
@synthesize SwishButton;

- (IBAction) Swish {
if (SwishImage.isAnimating) {
    [SwishImage stopAnimating];
    [SwishButton setTitle:@"Swish" forState:UIControlStateNormal];
} else {
    [SwishImage startAnimating];
    [SwishButton setTitle:@"Searching" forState:UIControlStateNormal];
}
}
- (void)viewdidload
{

NSArray * SwishArray;
SwishArray = [[NSArray alloc] initWithObjects:
                   [UIImage imageNamed:@"Orange_dot.png"],
                   [UIImage imageNamed:@"1.png"],
                  [UIImage imageNamed:@"2.png"],
                   [UIImage imageNamed:@"3.png"],
                   [UIImage imageNamed:@"4.png"],
                   nil];
    SwishImage.animationImages=SwishArray;
    SwishImage.animationDuration = 1;
    SwishImage.animationRepeatCount = 0;


[super viewDidLoad];
}

【问题讨论】:

    标签: objective-c animation uikit


    【解决方案1】:

    当我将它复制到一个空的 Xcode 项目中并在 Interface Builder 中正确链接所有内容时,图像视图开始制作动画。我假设某些东西在 Interface Builder 中没有正确链接。

    话虽如此,从标准的角度来看,您的代码有点尴尬。变量名称应以小写字母开头(包括属性)。你不再需要@synthesize 并且有一个新的 NSArray 快捷方式。以下是您的课程的外观:

    ViewController.h

    @interface ViewController : UIViewController
    @property (strong, nonatomic) IBOutlet UIImageView *swishImage;
    @property (strong, nonatomic) IBOutlet UIButton *swishButton;
    @end
    

    ViewController.m

    @implementation ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        NSArray *swishArray = @[
                   [UIImage imageNamed:@"Orange_dot.png"],
                   [UIImage imageNamed:@"1.png"],
                   [UIImage imageNamed:@"2.png"],
                   [UIImage imageNamed:@"3.png"],
                   [UIImage imageNamed:@"4.png"],
        ];
        self.swishImage.animationImages=swishArray;
        self.swishImage.animationDuration = 1;
        self.swishImage.animationRepeatCount = 0;
    }
    
    - (IBAction)swish:(id)sender {
        if (self.swishImage.isAnimating) {
            [self.swishImage stopAnimating];
            [self.swishButton setTitle:@"Swish" forState:UIControlStateNormal];
        } else {
            [self.swishImage startAnimating];
            [self.swishButton setTitle:@"Searching" forState:UIControlStateNormal];
        }
    }
    
    @end
    

    然后只需选择您的图像视图并转到 Connections Inspector。您应该看到标题为“引用插座”的部分,确保 swishImage 已连接到您的视图控制器。

    【讨论】:

    • 非常感谢您的建议,我是编码新手,并且能够突飞猛进地学习它。我已经开始整理我的命名约定。使用现在已经过时的方法,有时很难通过遵循教程来学习!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多