2014-02-27 24 views
0

我正在做一個iphone應用程序,我做了一個方法,編程創建一個新的UIImageView,它的工作很好(以及..有點偉大),但顯然是一個問題。uiimageview刷新所有其他imageviews

每當方法被調用,我在故事板創建的每個其他UIImageView被刷新,這意味着,他們都得到放回的地方,我把他們原來的故事板(他們應該是隨機移動)

繼承人的方法

- (UIImageView *)shootNewBullet { 
    UIImageView *newBullet = [[UIImageView alloc] initWithFrame:CGRectMake(80, playerShip.center.y,15,3)]; 
    newBullet.Image=[UIImage imageNamed: @"bullet2.png"]; 
    newBullet.hidden = NO; 
    [bulletArray addObject:newBullet]; 
    [self.view addSubview:newBullet]; 
    return newBullet; 
} 



heres where the method gets called 
    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
     UITouch *touch = [touches anyObject]; 
     CGPoint point = [touch locationInView:self.view]; 
       if (point.x > 101) { 
       bullets = [self shootNewBullet]; 
      } 
} 

如果更多的代碼是必要給很好的答案,請讓我知道

回答

1

這可能是使用自動佈局的結果(你可以把它們關掉在IB送如果這是問題)。使用自動佈局時,您不應設置任何框架。如果這樣做,只要視圖需要重新繪製,所有幀將被重置爲由約束定義的幀。如果您想要保持自動佈局打開,那麼您應該通過修改約束而不是直接設置框架來改變尺寸或位置。

+0

謝謝你的描述性的答案,你能告訴我你的意思是「修改約束條件」(我是一個新手還在:)) –

+0

哦,而且是IB –

+0

@AbdulAhmad,IB是Interface Builder(a故事板或xib)。約束是一個強大但複雜的系統,我無法在這裏解釋。您應該閱讀Apple的文檔,並/或從WWDC 2012中查看關於該主題的3個視頻。 – rdelmar