2012-12-15 24 views
3

我有這種情況:你如何移動一個NSImageView?

我有一個包含自定義NSImageView的NSView。 我想從視圖控制器中移動NSImageView,但目前爲止沒有成功。

這是視圖控制器的報頭:

#import <Cocoa/Cocoa.h> 

#include "MyAppDragAndDropImageView.h" 

@interface MyAppViewController : NSViewController <MyAppDragAndDropImageViewDelegate> 

@property (nonatomic,assign) IBOutlet MyAppDragAndDropImageView *dragAndDropImageView; 

@property (nonatomic,assign) IBOutlet NSTextField *workingFileLabel; 
@property (nonatomic,assign) IBOutlet NSTextField *workingFileSizeLabel; 

@property (nonatomic,assign) IBOutlet NSButton *clearButton; 

-(IBAction)onClearButtonClicked:(id)sender; 

所有IBOutlets已經從界面生成器相連。

我使用的視圖控制器這裏面的代碼移動定製NSImageView ...

-(void)awakeFromNib 
{ 
    //dragAndDropImageView frame 
    NSRect ddivFrame = [dragAndDropImageView frame]; 
    ddivFrame.origin.x = SOME_NUMBER; 
    ddivFrame.origin.y = SOME_NUMBER; 

    [dragAndDropImageView setFrame:ddivFrame]; 
    [dragAndDropImageView setNeedsDisplay:YES]; 

} 

...但沒有任何反應!

使用NSLog我發現框架「x」和「y」已更新,但它顯示在舊的位置!任何線索?

感謝

+0

您是否在代碼中創建並分配'dragAndDropImageView'?如果是這樣,請編輯您的問題以包含該代碼。另外,你還沒有在你的'MyAppDragAndDropImageView'類中重寫'frame'或'setFrame:',對吧? –

+0

它使用Interface Builder分配,我沒有重寫這些方法。但我找到了一個臨時解決方案(看答案)。 – Zi0P4tch0

+0

如果不先理解問題,我會毫不猶豫地將其稱爲解決方案。順便說一句,你爲什麼要從'awakeFromNib'設置幀? –

回答

0

dragAndDropImageViewclearButton位於視圖的中心。在awakeFromNib我將它們設置屏幕外,然後我用一個NSAnimation滑動他們進來。

爲什麼不將它們設置爲在筆尖隱藏/ alphaValue0,然後讓你的NSViewAnimation都顯示他們(淡入他們)並將它們移動到位?

1

我已經找到了解決辦法:

-(void)awakeFromNib 
{ 
    //dragAndDropImageView frame 
    NSRect ddivFrame = [dragAndDropImageView frame]; 
    ddivFrame.origin.x = SOME_NUMBER; 
    ddivFrame.origin.y = SOME_NUMBER; 

    [[dragAndDropImageView animator] setFrame:ddivFrame]; 

} 

這工作flawlessy!

相關問題