Iphone 动态更改UIView的位置
这是我的设置。我有一个正在创建并添加为子视图的viewcontroller。viewcontroller提供了一些用户可以选择的选项。按下viewcontroller以响应“长按”手势。在viewcontroller中,我添加了一个子UIView以将一些其他控件组合在一起,这样我可以将它们作为一个单元在屏幕上移动,并且在显示它们时,将它们置于长按位置的中心。以下是实例化视图控制器、更改其位置并将其添加为子视图的代码:Iphone 动态更改UIView的位置,iphone,objective-c,uiview,Iphone,Objective C,Uiview,这是我的设置。我有一个正在创建并添加为子视图的viewcontroller。viewcontroller提供了一些用户可以选择的选项。按下viewcontroller以响应“长按”手势。在viewcontroller中,我添加了一个子UIView以将一些其他控件组合在一起,这样我可以将它们作为一个单元在屏幕上移动,并且在显示它们时,将它们置于长按位置的中心。以下是实例化视图控制器、更改其位置并将其添加为子视图的代码: UserOptions *opts = [[UserOptions alloc
UserOptions *opts = [[UserOptions alloc] initWithNibName:@"UserOptions" bundle:nil];
[opts recenterOptions:location];
[self.view addSubview:opts.view];
这段代码确实创建并推送了viewcontroller,但是调用recenterOptions没有任何作用。以下是该方法:
- (void) recenterOptions:(CGPoint)location {
CGRect oldFrame = self.optionsView.frame;
CGFloat newX = location.x; // + oldFrame.size.width / 2.0;
CGFloat newY = location.y; // + oldFrame.size.height / 2.0;
CGRect newFrame = CGRectMake(newX, newY, oldFrame.size.width, oldFrame.size.height);
self.optionsView.frame = newFrame;
}
请注意,self.optionView是我添加到viewcontroller nib的子UIView
有人知道我为什么无法更改UIView的位置吗
问候,,
埃里克有几件事。首先,在调用-recenterOptions之前,尝试将视图添加到视图层次结构中:
UserOptions *opts = [[UserOptions alloc] initWithNibName:@"UserOptions"
bundle:nil];
[self.view addSubview:opts.view];
[opts recenterOptions:location];
接下来,只需设置视图的中心,而不是尝试更改其框架:
- (void) recenterOptions:(CGPoint)location {
[[self optionsView] setCenter:location];
}
您是否正在验证您的选项视图是否有效(非零)
我同意Rob,顺便说一句。您需要更改标题以匹配您的问题。视图是惰性加载的。在调用
self.view
之前,不会加载视图,并且optionView为nil,因此self.optionView.frame=newFrame
不会执行任何操作。此问题的标题与问题本身无关。您可能需要更新它以获得更好的响应。这就成功了。反转这两个调用使代码正常工作。我会更新标题的。不知道我第一次是怎么做的。