【问题标题】:Unable to properly position NSImageView in NSView无法在 NSView 中正确定位 NSImageView
【发布时间】:2013-09-19 22:36:55
【问题描述】:

我想在我的主视图中显示NSImageView

img=[[NSImageView alloc]init];
[img setImage:[[NSImage alloc]initWithContentsOfFile:filename]];
width=img.image.size.width/2;
height=img.image.size.height/2;
[img setFrame:NSMakeRect(0,0,width ,height)];
mainview = [((AppDelegate *)[NSApp delegate]).window contentView];
[mainview addSubview:img];

图像已正确显示,但不是位于主窗口的左上角,而是完全位于屏幕的右侧。

上面有什么问题?

【问题讨论】:

  • 自动布局使这更容易
  • 重点是我想完全控制定位。那么我应该删除自动布局还是添加它?有什么建议吗?谢谢。
  • 如果您使用自动布局,请停止尝试触摸框架。只需设置约束。在将视图添加为子视图之后将约束添加到超级视图。添加约束后,您可能需要在父视图上调用 layout 或 layoutIfNeeded。
  • 我没有使用自动布局,因为我想完全控制位置。每次移动窗口/调整窗口大小以在正确位置重绘 nsimageview 时,如何获取事件?
  • 自动布局让您控制。

标签: macos cocoa nsview nsimageview


【解决方案1】:

试试这样:-

- (void)windowDidLoad
{
 NSString *imageName = [[NSBundle mainBundle] pathForResource:@"yourImage ofType:@"tiff"];
    NSImage *photoImage = [[NSImage alloc] initWithContentsOfFile:imageName];
    [yourimgView setImage:photoImage];
    CGFloat width=yourimgView.bounds.size.width;
    CGFloat height=yourimgView.bounds.size.height;
    CGFloat xboundspoint=yourimgView.bounds.origin.x;
    CGFloat yboundspoint=yourimgView.bounds.origin.y;   
    [yourimgView setFrame:NSMakeRect(xboundspoint, yboundspoint+150.0, width, height)];
    [yourview addSubview:yourimgView];
    [[[self window]contentView]addSubview:yourview];
    [super windowDidLoad];
}

【讨论】:

  • 谢谢,但是这个给了我同样的问题。然而,我发现,只要我使用鼠标更改窗口大小,图片就会直接转到正确的位置。知道如何让它直接进入正确的位置吗?
  • 为此无需担心选择您的图像视图,然后在尺寸检查器内的界面生成器中检查所有自动调整大小的行,然后您的图像视图在您调整窗口大小时无法移动到任何地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
相关资源
最近更新 更多