- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的项目中,我将有两个 View Controller ,一个在底部有一个大的 UIView subview (这是我图表中的 View Controller 1),当用户点击这个 UIView 时,它会向上移动以显示第二个 View Controller 的 View 。这非常类似于 iOS 版 Google map 中的兴趣点 View 。当您搜索某个地点时,它会在屏幕底部显示一个小 View ,然后在与之交互时展开以填满屏幕 - 这实际上就是我想要做的。
所以我的问题是,实现此方案的最佳方式是什么?最终,它看起来很像以模态方式呈现 UIViewController,除了它的 UIView 始终存在,尽管大小不同。
谢谢
最佳答案
我认为您不需要两个单独的 View Controller 。您需要做的就是稍微定制一下您的 UIScrollView
在你的UIViewController
.
首先,您需要设置 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;
其次,您添加一个 UITapGestureRecognizer
给你的UIView
这将需要完全显示在屏幕上。这是您可以使用的一段代码
UITapGestureRecognizer *tapGestureRecognizer =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(tapped:)];
tapGestureRecognizer.numberOfTapsRequired = 1;
[view addGestureRecognizer:tapGestureRecognizer];
最后,你可以实现tapped
显示全新 UIView
的方法在屏幕上更改 contentOffset
你的UIScrollView
.不要忘记消失导航栏。所以,
- (void)tapped{
self.navigationController.navigationBarHidden = YES;
[self.scrollView setContentOffset:CGPointMake(0,view1.frame.origin.y) animated:YES];
}
好吧,最后,您在屏幕上完全显示了您的第二个 View 。假设您使用的 iPhone >5,我使用静态值,但您可以根据您运行的设备使用动态高度值。别忘了 setUserInteractionEnabled
在你的第二个观点中。
我的错误我认为你不想导航栏,但这没什么大不了的,只需要更改 setContentOffset y 值而不使用 navigationBarHidden
属性。
关于ios - 如何让将以模态方式呈现的 UIViewController 的 UIView 始终出现在屏幕底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22235003/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!