【问题标题】:How to update the background of a UIImageVIew?如何更新 UIImageVIew 的背景?
【发布时间】: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


【解决方案1】:

关闭自动布局并使用 springs-struts

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多