2015-10-07 162 views
0

我有一個UIView子類(用於處理拖放操作),並使用界面構建我添加了兩個子視圖:UIImageViewUILabel更新超視圖幀更改後子視圖的約束

兩者都有限制:

UIImageView邊框搭配,以填補所有可用空間的上海華邊界。 UILabel居中垂直和水平。

在這裏你可以看到三個(superview背景是綠色的)。當我動畫在上海華一幀變化

enter image description here

我的問題就來了。超級觀點看起來不錯,但其子視圖變得瘋狂。

在這裏,你可以看到它(忽略棕色方形,是從另一個視圖)

enter image description here

正如你所看到的,子視圖「秋天」,從上海華盈,儘管我打電話updateConstraints每個子視圖。

我知道將AutoLayout與setFrame混合是一種糟糕的做法,但這是我知道這樣做的唯一方法。

謝謝

+0

爲什麼不移除superview並將UIImageView的背景設置爲綠色?然後使用正確的contentmode正確的尺寸圖像,看到這個問題:http://stackoverflow.com/questions/4895272/difference-between-uiviewcontentmodescaleaspectfit-and-uiviewcontentmodescaletof –

+0

我試過了,但後來我無法將UILabel設置爲UIImageView的子視圖。此外,綠色只是暫時的。 – WedgeSparda

+1

您可能包含源代碼嗎?你所描述的行爲是預期會發生的事情。需要考慮的幾件事情:在控制檯運行時是否收到任何警告?如果約束無法解決,有些將被銷燬,您會在日誌中發出警報。除非實際修改它們,否則不應在子視圖上調用「-updateConstraints」。在你的情況下,這聽起來不是必要的。你如何處理拖動視圖的位置?如果視圖的位置有約束,但是您修改了框架,則可能會發生意外的行爲 –

回答

0

感謝評論我做了一些改變。

1)使用UIImageView更改超級視圖(綠色)。

2)刪除UILabel並使用CATextLayer放置文本,使用this answer將文本垂直放置在UIImageView的前面。

現在它工作正常。謝謝您的幫助。