2015-05-06 16 views
0

我正在嘗試更改包含在父級NSView中的NSButton的座標,而且顯然不能正常工作,因爲按鈕位置沒有更改。這兩個元素都在nib文件中定義,並且父視圖使用CoreAnimation將動畫應用於它。NSView的子視圖如何動態定位?

我試過以下。

button.frame.origin.x = 500

和...

var frame:CGRect = button.frame 
frame.origin.x = 500 
button.frame = frame 

即使禁用了動畫,我似乎無法動態定位子視圖。是否有一些功能可以防止兒童視圖被編程定位?

請注意,我使用Swift和XCode 6.3.1。

回答

1

我猜你正在使用AutoLayout約束,因爲你使用的是最新的工具。

如果是這樣,直接設置子視圖的框架將不會按照您期望的方式工作(如果它執行任何操作,它會在與動畫混合時導致奇怪的繪製毛刺/閃爍)。您必須爲佈局約束創建出口並對其進行修改。

如果你不使用AutoLayout,我建議看看你的button插座,以確保它實際連接(即,你不是在與nil交談)。即使插座已連接,請確保它在運行時不是nil - 您可能在加載筆尖之前嘗試與按鈕通話,並且插座/操作連接已恢復。

+0

感謝您的想法。我將如何去了解是否使用AutoLayout?在Interface Builder中看不到AutoLayout的選項。 – JeremyFromEarth

+0

這是默認選擇。但是如果你沒有添加約束的按鈕,AutoLayout應該離開它的框架。 –