2016-06-12 73 views
0

使用滑塊移動UIImageView時會出現一些問題。這是我目前使用我的代碼:iOS Swift - 使用滑塊移動圖像

@IBOutlet weak var titanic: UIImageView! 

... 

let screenWidth = UIScreen.mainScreen().bounds.width 
let titanicWidth = titanic.bounds.size.width 
let viewcenter = titanicWidth/2 
let slidervalue = CGFloat(sender.value) 
let value = (screenWidth * slidervalue * (1.0 - titanicWidth/screenWidth)) + viewcenter 
titanic.center.x = CGFloat(value) 
print(value) 

其實,我可以將圖像與此代碼移動,但不知怎地,圖像總是「跳」回它在屏幕中間原點位置,不移動滑塊......你有什麼想法,這是怎麼發生的?我已經檢查了右側的檢查器,可能會導致這種效果,但沒有運氣......

+0

您是否對imageView使用約束? –

+0

不,我甚至刪除了整個圖像,並新增了它......沒有任何影響 –

+0

好吧,它什麼時候跳回來?剛剛釋放滑塊後,或者如果您更改滑塊位置? –

回答

0

除非您在您的筆尖/故事板中未選中「使用AutoLayout」複選框,則使用AutoLayout,因此係統會爲您的視圖添加約束,如果您不這樣做。

使用AutoLayout時,您不能直接修改視圖的框架/邊界/中心,或者完全無法修改您所描述的內容。下次觸發佈局更新時,視圖會回到由其約束定義的位置。

您可能需要關閉整個筆尖/故事板的AutoLayout,或將出口添加到約束並更改約束常數值,然後在視圖上調用layoutIfNeeded()以使約束更改生效。

我建議增加網點的約束。切換到老式的struts-and-spring風格的表單設計是一個很大的改變,並且會對你的視圖控制器產生很大的副作用。 (我個人認爲更喜歡 struts-and-springs樣式的表單設計,但我強迫自己使用AutoLayout,因爲這是一種新的處理方式。)

+0

第三種選擇是在代碼中創建「UIImageView」,而不是將它放在故事板中。然後*自動佈局*不會觸摸它,你可以移動它的框架。 – vacawama

+0

問題是由自動佈局引起的。 Thx隊友! –

+0

你最終使用了什麼解決方案? –