Ios 如何使以模式显示的UIViewController的UIView始终显示在屏幕底部?
在我的项目中,我将有两个视图控制器,一个在底部有一个大的UIView子视图(这是我的图表中的视图控制器1),当用户点击这个UIView时,它将向上移动以显示第二个视图控制器的视图。这很像iOS版谷歌地图中的兴趣点视图。当你搜索一个地方时,它会在屏幕底部显示一个小视图,当与之交互时,该视图会展开以填充屏幕-这就是我想要做的 所以我的问题是,实施这一计划的最佳方式是什么?最终,它看起来很像是以模式呈现UIViewController,只是它的UIView始终存在,尽管大小不同 多谢各位Ios 如何使以模式显示的UIViewController的UIView始终显示在屏幕底部?,ios,objective-c,uiview,uiviewcontroller,modal-dialog,Ios,Objective C,Uiview,Uiviewcontroller,Modal Dialog,在我的项目中,我将有两个视图控制器,一个在底部有一个大的UIView子视图(这是我的图表中的视图控制器1),当用户点击这个UIView时,它将向上移动以显示第二个视图控制器的视图。这很像iOS版谷歌地图中的兴趣点视图。当你搜索一个地方时,它会在屏幕底部显示一个小视图,当与之交互时,该视图会展开以填充屏幕-这就是我想要做的 所以我的问题是,实施这一计划的最佳方式是什么?最终,它看起来很像是以模式呈现UIViewController,只是它的UIView始终存在,尽管大小不同 多谢各位 我只需要使
我只需要使用一个视图控制器,并将下部视图作为其子视图。当您在主视图中检测到点击时,您可以向上滑动底部视图,并根据需要调整两个视图的大小和位置。我认为您不需要两个单独的视图控制器。您只需在
UIViewController
中定制一点您的UIScrollView
首先,您需要设置scrollView的ContentSize。然后,您需要防止您的UIScrollView
滚动,因为您不希望它滚动
self.scrollView =[[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.scrollView.delegate = self;
self.scrollView.contentSize = CGSizeMake(320, 568 + x ); // x represents the height of white screen in your first view controller.
self.scrollView.bounces = NO;
self.scrollView.scrollEnabled = NO;
其次,将需要完全显示在屏幕上的uiapgesturecognizer
添加到UIView
。下面是一段您可以使用的代码
UITapGestureRecognizer *tapGestureRecognizer =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(tapped:)];
tapGestureRecognizer.numberOfTapsRequired = 1;
[view addGestureRecognizer:tapGestureRecognizer];
最后,通过更改UIScrollView
的contentOffset
,可以实现tapped
方法,在屏幕上显示全新的UIView
。别忘了消失导航栏。所以
- (void)tapped{
self.navigationController.navigationBarHidden = YES;
[self.scrollView setContentOffset:CGPointMake(0,view1.frame.origin.y) animated:YES];
}
最后,在屏幕上完全显示第二个视图。我使用静态值假设您使用的iPhone>5,但您可以使用动态高度值,具体取决于您正在运行的设备。不要忘记在第二个视图中设置用户交互启用
我的错误我认为你不想使用导航栏,但这没什么大不了的,你只需要更改setContentOffset y值,不要使用
navigationBarHidden
属性。不能是模式视图,因为你会失去上一个视图的交互,再加上除了iPad上的popover之外的任何东西,视图控制器都是全屏的。考虑在同一个视图控制器上创建一个子UIVIEW。使用手势识别器来控制动作。太好了,谢谢。我会在周末尝试这个,然后我会来接受这个答案。@mMo,你试过了吗?很高兴知道,快乐编码:)