【发布时间】:2013-08-23 20:20:38
【问题描述】:
已解决:关闭自动布局并使用springs-struts
我有一个我一直在试验的 Pong 类型游戏,它使用 xib 文件中的三个 UIImageView 对象。一个 UIImageView 是球,通过 NSTimer 对象在屏幕上弹跳,另外两个是“桨”。
当用户点击屏幕时,球开始移动。上下拖动手指可移动右侧桨叶。桨只使用 10x60 PNG 文件作为背景。当用户点击屏幕时,球在运动,我想临时改变球拍的背景作为视觉效果。问题是,更改桨的背景似乎会重置 UIImageViews 在屏幕上的位置。 iOS 是否有一些深奥的属性会在背景更改时重置视图或其他东西,或者我只是做错了吗?
.h 文件
@property (weak, nonatomic) IBOutlet UIImageView *paddleLeft;
@property (weak, nonatomic) IBOutlet UIImageView *paddleBall;
@property (weak, nonatomic) IBOutlet UIImageView *paddleRight;
.m 文件
@synthesize paddleRight;
@synthesize paddleLeft;
@synthesize paddleBall;
...
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog (@"touches began");
if (self.paused)
{
self.paused = NO;
NSLog (@"ball launch");
}
else
{
// hilite the paddle with different 10x60 image
self.paddleRight.image = [UIImage imageNamed:@"rect_2.png"];
}
}
【问题讨论】:
-
只要它们是相同的尺寸设置
self.paddleRight.image不应该改变框架。 -
这可能是自动布局问题。如果它被打开,并且你正在改变框架,任何导致系统布局子视图的东西(比如改变图像)都会将对象的位置重置为约束设置的位置。
-
rdelmar - 你是对的!从 xib 中删除自动布局并使用弹簧/支柱调整约束后,在更改图像时不再重置视图的位置。谢谢!
-
贾斯汀-我也读过。然而,我所有的图像都是相同的大小。还是谢谢。
-
请写一个答案而不是编辑问题。
标签: ios uiimageview