【问题标题】:Setting the position of an UIImageView in Objective-C在 Objective-C 中设置 UIImageView 的位置
【发布时间】:2014-04-23 10:03:23
【问题描述】:

我正在创建一个 iOS 应用程序来展示博物馆的几件物品。每件物品在博物馆的地图上都有一定的位置。它们的坐标存储在一个数组中。到现在为止还挺好。 根据您选择的项目,该项目的位置应显示在地图上。

我已经在 Xcode 的 Interface Builder 中构建了视图。我添加了一个 ImageView 并将其位置设置为 0 (x+y)。

我已将 ImageView 添加为我的 .h 文件中的插座:

@property (weak, nonatomic) IBOutlet UIImageView *myView;

最后在 Views viewDidLoad()-Method 经过数小时的研究(例如 herehere 甚至here) 像这样:

[self.myView setFrame:CGRectMake(xCoord, yCoord, self.myView.frame.size.width, self.myView.frame.size.height)];

xCoord 和 yCoord 是包含项目坐标的浮点变量。 我在 setFrame 方法之前和之后 NSLogging 框架的位置,它告诉我 ImageView 的 x 和 y 位置已经改变。但在我的屏幕上,它仍然出现在屏幕的左上角。

我已经尝试过一些不同的方法,比如这个:

CGRect needleOutletFrame = [self.myView frame];
needleOutletFrame.origin.x = xCoord;
needleOutletFrame.origin.y = xCoord;
[self.myView setFrame:needleOutletFrame];

也没有用...

有人知道我的问题的解决方案吗?

干杯, 亚历克斯

编辑:

我已经删除了我使用 Interface Builder 创建的 UIImageView,并自己在 ViewWillAppear 方法中创建了一个 UIImageView:

UIImageView *myView;
myView = [[UIImageView alloc] init];
[self.view addSubview:myView];
myView.image = [UIImage imageNamed:@"ort_nadel_r.png"];
[myView setFrame:CGRectMake(257, 90, 300, 300)];

我不知道为什么,但它终于如我所愿! 谢谢!

【问题讨论】:

  • 您知道您将 x 和 y 都设置为 xCoord 吗?您从哪里得知职位发生了变化?
  • 抱歉,这只是一个错字……当然 y 应该设置为 yCoord。我也知道 origin.x 是不可分配的 :-) 我做 NSLog(@"%@", NSStringFromCGRect(self.myView.frame));在改变位置之前和之后。根据那个 NSLog-Output,位置应该已经改变了。但它没有出现在屏幕上。
  • 你为什么要改变 ViewDidLoad 中的位置?
  • 什么地方比 ViewDidLoad 更合适?你有什么建议?
  • 我们在viewViewAppear中试试

标签: ios objective-c uiimageview position


【解决方案1】:

如果您已经在视图控制器中连接了 UIImageView,请尝试关闭 自动布局 以编程方式修改它的框架:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-14
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    相关资源
    最近更新 更多