你如何移动NSImageView?

时间:2012-12-15 02:12:19

标签: objective-c macos cocoa xcode4.5

我遇到这种情况:

我有一个包含自定义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;

所有IBOutlet都已从Interface Builder连接。

我在视图控制器中使用此代码来移动自定义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”已经更新,但它显示在旧位置!有线索吗?

由于

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案:

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

    [[dragAndDropImageView animator] setFrame:ddivFrame];

}

这完美无瑕!

答案 1 :(得分:0)

  

dragAndDropImageViewclearButton位于视图中心。在awakeFromNib我将它们设置在屏幕外,然后我使用NSAnimation将它们滑入。

为什么不在笔尖中将它们设置为隐藏/ alphaValue0,然后让你的NSViewAnimation显示它们(淡入它们)并将它们移动到位?