【发布时间】:2012-12-15 02:12:19
【问题描述】:
我有这种情况:
我有一个包含自定义 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 都已从 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”已经更新,但显示在旧位置!有什么线索吗?
谢谢
【问题讨论】:
-
您是否在代码中创建和分配
dragAndDropImageView?如果是这样,请编辑您的问题以包含该代码。此外,您还没有在MyAppDragAndDropImageView类中覆盖frame或setFrame:,对吧? -
它是使用 Interface Builder 分配的,我没有覆盖这些方法。但我找到了一个临时解决方案(看答案)。
-
在没有首先了解问题的情况下,我会犹豫将其称为解决方案。顺便说一句,你为什么要从
awakeFromNib设置框架? -
dragAndDropImageView和clearButton在视图中居中。在awakeFromNib中,我将它们设置在屏幕外,然后使用 NSAnimation 将它们滑入。
标签: objective-c macos cocoa xcode4.5