2012-10-03 16 views
0

我有(+)和移動內容( - )按鈕...的(+)按鈕應該使窗口長在向下的方向,和( - )按鈕應該撤消(+)按鈕的功能,使其從底部縮短。換擋窗口框架沒有在Objective-C

問題是,框架只能從底部拉伸,大部分UI項目應該保持原位 - 窗口底部有按鈕,應該跟隨窗口高度的變化。

問題是我使用這個轉移窗口和維持其內容的同一位置...

NSRect frame = sender.window.frame; 
NSLog(@"\nHeight and width of window frame: (%f,%f).\nThe x and y origin of the window frame: (%f,%f). ", frame.size.height, frame.size.width, frame.origin.x, frame.origin.y); 
frame.origin.y -= 22; 
frame.size.height += 22; 
[sender.window setFrame:frame display:YES animate:NO]; 

NSRect viewFrame = mainView.frame; 
viewFrame.origin.y -= 22; 
viewFrame.size.height += 22; 
mainView.frame = viewFrame; 

但是說你點擊一次按鈕(+);所有的項目都會稍微向上移動,而框架變長。如果您在第一次按下後連續單擊(+),它將按預期運行:框架將向下移動,其內容將保持原位。 如果您然後單擊( - )按鈕一次;所有的項目都會稍微向下移動,而邊框縮短。在第一次按下後連續單擊( - ),它將按預期移動框架。

看起來按下按鈕第一次將移動所有的窗口內容,而連續的按下將按預期的功能......我想知道如果我在XCode的界面編輯器中缺少有關自動調整的內容。謝謝。

回答

0
[mainWindow disableScreenUpdatesUntilFlush]; 
[mainWindow disableFlushWindow]; 

NSRect frame = sender.window.frame; 
NSRect viewFrame = mainView.frame; 

viewFrame.size.height += 25; 
frame.size.height += 25; 
frame.origin.y -= 25; 

[sender.window setFrame:frame display:YES animate:NO]; 
mainView.frame = viewFrame; 

[mainWindow enableFlushWindow]; 

這工作正常。我無法獲得NSView和窗口鏈接,所以我只是手動移動它們並使用disableFlushWindow使它在同一時間無縫地發生。

0

假設mainView是在窗口的主視圖,你不應該手動修改它的框架。只要你的彈簧和支柱(或約束)配置正確,它應該自動調整窗口大小。