我对xcode很陌生。试图玩一下,但遇到了这种奇怪的行为......
我使用CoreMotion加速功能在屏幕上移动图像。
缩短移动UIImageView移动代码...
dispatch_async(dispatch_get_main_queue(), ^{
CGRect recta = movingImage.frame;
//data is the coremotion info.
float dataAccelerationX = data.acceleration.x;
float dataAccelerationY = -data.acceleration.y;
float movetoX = recta.origin.x + (dataAccelerationX * stepMoveFactor);
float maxX = self.view.frame.size.width - recta.size.width;
float movetoY = (recta.origin.y + recta.size.height) - (dataAccelerationY * stepMoveFactor);
float maxY = self.view.frame.size.height;
movingImage.frame = recta;
});
发生这种情况时,我有一个按钮,它只是在现有的UIView上创建另一个UIImageView ...
-(void)addInAnotherImage
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"making UIImageView with image file");
UIImageView *someImage =[[UIImageView alloc] initWithFrame:CGRectMake(200,200,200,200)];
someImage.image=[UIImage imageNamed:@"someimage.png"];
[self.view addSubview:someImage];
});
}
发生这种情况时,movingImage会跳回到它开始的原始位置。我希望实现addInAnotehrImage触发,而movingImage使用CoreMotion的加速在屏幕上浮动。任何人都可以帮我确定运行addInAnotherImage时为什么movingImage会跳回到原来的位置?
答案 0 :(得分:-1)
使用IBOutlet设置了movingImage。有限制。
我所做的是从
更改UIImageView类型IBOutlet UIImageView *movingImage
到
@property (nonatomic, strong) UIImageView *movingImage;
然后合成它,并在ViewDidLoad设置开始坐标。