【发布时间】: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 经过数小时的研究(例如 here 或 here 甚至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