【问题标题】:How do you move a NSImageView?你如何移动一个 NSImageView?
【发布时间】: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 类中覆盖 framesetFrame:,对吧?
  • 它是使用 Interface Builder 分配的,我没有覆盖这些方法。但我找到了一个临时解决方案(看答案)。
  • 在没有首先了解问题的情况下,我会犹豫将其称为解决方案。顺便说一句,你为什么要从awakeFromNib 设置框架?
  • dragAndDropImageViewclearButton 在视图中居中。在awakeFromNib 中,我将它们设置在屏幕外,然后使用 NSAnimation 将它们滑入。

标签: objective-c macos cocoa xcode4.5


【解决方案1】:

我找到了解决办法:

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

    [[dragAndDropImageView animator] setFrame:ddivFrame];

}

这完美无瑕!

【讨论】:

    【解决方案2】:

    dragAndDropImageViewclearButton 在视图中居中。在awakeFromNib 中,我将它们设置为离屏,然后使用 NSAnimation 将它们滑入。

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

    【讨论】:

      猜你喜欢
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 2020-09-08
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多