0

我已经完成此代码以在单击按钮时启动动画,当我单击按钮时应该更改按钮的内容并启动动画,但它只会更改按钮的内容?我的代码有什么问题吗?

@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];
}
4

1 回答 1

2

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

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

视图控制器.h

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

视图控制器.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 已连接到您的视图控制器。

于 2013-01-14T23:27:00.643 回答