2015-10-13 37 views
1

我目前正在開發iPhone應用程序,需要重新定位UIImageView。這是迄今爲止我所做的迄今:UIImageView無法以編程方式更改位置

import UIKit 
import CoreGraphics 
import AVFoundation 
import QuartzCore 

class _DBubbleViewController: UIViewController { 
    @IBOutlet weak var BubbleBackground: UIImageView! 
    @IBOutlet weak var Bubble: UIImageView! 


override func viewWillAppear(animated: Bool) { 
Bubble.frame = CGRect(x: 168, y: 220, width: Bubble.bounds.size.width,  height: Bubble.bounds.size.height) 

我已經檢查@IBAction連接正確,但是當我運行該程序,UIImageView位置不會改變。誰能幫忙?

+1

您是否在使用autolayout? – tagy22

+0

你用故事板嗎?該項目是自動佈局? – engmahsa

+1

如果使用自動佈局,則需要使用約束來定位UIImage。或者,您可以將「translatesAutoresizingMaskIntoConstraints」設置爲「NO」,以用於包含UIImage的視圖。否則,當爲您添加UIImageView時會生成約束,從而在佈局發生時強制圖像回到該點,這就是你看到了。我建議你使用UIImageView的約束。 –

回答

5

在Storyboard中,單擊您的UIImageView並添加頂邊的約束和頂邊的約束。

CTRL從視圖層次結構中的每個約束拖拽到swift文件中,併爲每個約束添加IBOutlets:調用它們bubbleLeadingConstraintbubbleTopConstraint

更改您的代碼:

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear() 

    bubbleLeftConstraint.constant = 168; 
    bubbleTopConstraint.constant = 220; 
} 

如果要更改寬度/高度,也和在代碼中設置添加約束了點。

您現在可以通過更改約束來更改位置。您還可以通過更改常量並將self.view.layoutIfNeeded()放入動畫塊來爲任何更改設置動畫。

+0

不錯!我得到它與這種方法工作!萬分感謝! @Rory McKinnel –

相關問題