- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
注意:在此处查看 Thuy 的 UINavBar 优秀子类:
https://stackoverflow.com/a/20720359/294884
如果您正在解决这个问题,GTScrollNavigationBar 已经接近于导航栏问题的现成解决方案!
例如:在 2014 年的 iPhone 上,打开 Safari,加载任何网页。
查看底部的 iOS 工具栏。
现在上下移动你的手指 只有几个像素 .
基本上是底部的工具栏,用手指移动 .此外,工具栏后面滚动页面时出现/消失 ,遵循特定的逻辑。
但是交互规则是非常复杂 , 并涉及隐藏期间的手指开/关、距离匹配、页面下方时的手势、非常短页面的特殊情况等。
我要正是复制苹果的行为。
(我们应该匹配 Apple UX,这似乎是明智的。)
有没有办法做到这一点? Apple 是否为此提供了一个我不知道的一步命令?或者你必须费力地复制这个概念?
谢谢。
顺便说一句,下面的逻辑是可靠的,会大致重复 苹果的做法是:
-(void)feedIsScrolled:(CGFloat)scrollNewOverallYPosition
{
// call this routine when scrollViewDidScroll:
self.feedIsScrolledDelta =
scrollNewOverallYPosition - self.feedIsScrolledPrevious;
self.feedIsScrolledPrevious =
scrollNewOverallYPosition;
// nb, you do those only in this routine, NOT the following routine.
if ( scrollNewOverallYPosition < 15.0 )
{
.. animate in the bar
return;
}
if ( self.feedIsScrolledDelta > 0.0 )
.. animate away the bar
}
-(void)feedIsThrown:(CGFloat)scrollNewOverallYPosition
{
// call this routine when scrollViewDidEndDragging:
// BUT ONLY when willDecelerate: is true
if ( self.feedIsScrolledDelta <= 0.0 )
.. animate in the bar
else
.. animate away the bar
}
顺便说一句,当然你可以使用
(void)setToolbarHidden:(BOOL)hidden animated:(BOOL)animated
上下滑动 UIToolbar。但是这对“手指匹配”没有任何帮助。
最佳答案
没有开源可以做到这一点,但我不认为它很难实现。像 Safari 一样拥有精确的 1:1 行为可能有些困难,但仍然可以做到。
MobileSafar 可以附加到调试器中,并使用断点和 Objective C 运行时进行调试和逆向工程。
例如,您没有使用工具栏和导航栏的两个假设是不正确的。
这是滚动前的 View 层次结构:
http://pastebin.com/aRXr7b5Z
滚动后:
http://pastebin.com/CasBNuxq
如您所见,条形图已从其正常位置移开。
打破上 -[BrowserToolbar setFrame:]
,这是堆栈跟踪:
* thread #1: tid = 0x2332c, 0x000000010003fa70 MobileSafari`___lldb_unnamed_function1519$$MobileSafari, queue = 'com.apple.main-thread', stop reason = breakpoint 8.1
* frame #0: 0x000000010003fa70 MobileSafari`___lldb_unnamed_function1519$$MobileSafari
frame #1: 0x0000000100023e51 MobileSafari`___lldb_unnamed_function825$$MobileSafari + 1338
frame #2: 0x00000001000268da MobileSafari`___lldb_unnamed_function871$$MobileSafari + 55
frame #3: 0x000000010009856a MobileSafari`___lldb_unnamed_function3864$$MobileSafari + 388
frame #4: 0x0000000100098996 MobileSafari`___lldb_unnamed_function3871$$MobileSafari + 154
frame #5: 0x000000010002ba89 MobileSafari`___lldb_unnamed_function990$$MobileSafari + 209
frame #6: 0x0000000102396a8c UIKit`-[UIScrollView(UIScrollViewInternal) _notifyDidScroll] + 55
frame #7: 0x000000010238692b UIKit`-[UIScrollView setContentOffset:] + 628
frame #8: 0x000000010238ab00 UIKit`-[UIScrollView _updatePanGesture] + 1989
frame #9: 0x0000000102644002 UIKit`_UIGestureRecognizerSendActions + 188
frame #10: 0x0000000102642f68 UIKit`-[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 357
frame #11: 0x0000000102647319 UIKit`___UIGestureRecognizerUpdate_block_invoke + 53
frame #12: 0x00000001026472a1 UIKit`_UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 257
frame #13: 0x000000010263f377 UIKit`_UIGestureRecognizerUpdate + 93
frame #14: 0x0000000102353e55 UIKit`-[UIWindow _sendGesturesForEvent:] + 928
frame #15: 0x0000000102354b14 UIKit`-[UIWindow sendEvent:] + 909
frame #16: 0x000000010232c6da UIKit`-[UIApplication sendEvent:] + 211
frame #17: 0x0000000102319f2d UIKit`_UIApplicationHandleEventQueue + 9579
frame #18: 0x0000000100573f21 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
frame #19: 0x00000001005737f2 CoreFoundation`__CFRunLoopDoSources0 + 242
frame #20: 0x000000010058f66f CoreFoundation`__CFRunLoopRun + 767
frame #21: 0x000000010058ef83 CoreFoundation`CFRunLoopRunSpecific + 467
frame #22: 0x00000001011a0f04 GraphicsServices`GSEventRunModal + 161
frame #23: 0x000000010231c273 UIKit`UIApplicationMain + 1010
frame #24: 0x00000001000518d2 MobileSafari`___lldb_unnamed_function1998$$MobileSafari + 1558
MobileSafari'___lldb_unnamed_function990$$MobileSafari
上设置了一个断点并获得
self
可变,打印
po $arg1
.这是所有魔法发生的地方:
关于ios7 - 显示/隐藏 UIToolbar, "match finger movement",例如 iOS7 Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21929220/
我正在创建一个 UIToolbar,上面只放置了一个 UILabel。标签内容是动态的并且可以更改,我想将其集中在 UIToolbar 上。 有人知道 UIToolbar 左侧和右侧的确切边距大小吗?
我正在关注来自 here 的第二条提示.在本技巧中,两个 UIBarButtonItem 被放在一个 UIToolbar 中。最后,将 UIToolbar 添加到 UINavigationBar。现在
我有一个非常顽固的 UIToolbar,无论我尝试如何不同的方法,它都拒绝改变其高度。 我看过这个问题,但它对我不起作用 Is there a way to change the height of
如何制作垂直的 UIToolbar? 最佳答案 子类化 UIToolbar 并执行以下操作: CGFloat DegreesToRadian(CGFloat degrees) { return
是否可以在屏幕顶部放置一个 UIToolbar?示例应用程序类似于“日历”,右侧有“+”,左侧有“日历”按钮。 最佳答案 您可以将 UIToolbar 放置在任何地方。这只是一个 UI View 。
我需要创建一个使用图像作为背景的 UIToolbar 对象。大多数按钮也是图像,并且是矩形的。然而,有一个按钮是圆形的,并且与工具栏重叠,就像 Windows 任务栏上的“开始”按钮一样。见下文。 我
我想显示一个顶部有圆角的UIToolbar,最简单的方法是什么?工具栏未在窗口上对齐;它周围都有边距。谢谢! 最佳答案 非常简单。 首先 - 在 View Controller 的 .h 文件中有一个
我的 View 底部有一个 UIToolbar,并且此工具栏中有一个 UITextField。当我开始编辑此字段时,它隐藏在键盘后面。为了查看我输入的内容,我想在键盘出现时将工具栏向上移动(然后在完成
在我的应用程序中,我有一个工具栏,在某个时刻我想禁用或启用一些按钮。最简单的方法是什么?如何访问 UIToolbar 的 items 属性? 这是我的代码: -(void)addToolbar {
我有一个 UINavigationController,它被推送到 DetailsViewController。在这个DetailsViewController中,我想使用每个UINavigation
昨天下载了 IOS5 SDK,我用来将 UIToolbar 的背景设置为自定义图像的这段代码停止工作。如果我将目标设置为 IOS4.3 及以下,它仍然有效。 [self.bizToolbar inse
我正在尝试放置 UIToolBar在 UINavigationBar . UIToolbar* tempFontSizeToolBar = [[UIToolbar alloc] initWith
我有一个 UItableView,底部有一个工具栏。工具栏有两个按钮,分别是“水果”和“蔬菜”。单击它们将仅显示相应的类别。 我已经设法让显示功能正常工作,但我不知道如何在选择时将按钮设置为 sele
这个问题在这里已经有了答案: How to create this toolbar programmatically [closed] (6 个答案) 关闭 8 年前。 我试图在一个子类 ABPer
我想创建上面的用户界面。具体来说,一个更高的工具栏。但我需要以底层 UI(即内容 View )相应显示(即在工具栏下方)的方式这样做。 我熟悉 iOS 5 中新的 UIAppearance 选项。但是
UI问题在这里;我认为 UIToolbars 应该与状态栏融为一体?还是仅适用于 NavigationControllers? 最佳答案 UIToolBar 在顶部有一条默认的 1px 线(超出范围)
我有一个 UIToolbar。 如果我像这样创建一个 UIBarButton,它会起作用: UIBarButtonItem *button = [[UIBarButtonItem alloc] ini
我希望在用户单击按钮时(在我的例子中是当他们放大照片时)以编程方式将 UIToolbar 添加到 View 。 当我在 click 方法中创建工具栏并添加到 subview 时,它似乎工作正常但是如果
我的 View 上有一个 UITextView,并且可以通过按键盘工具栏上的完成按钮来关闭键盘。此按钮还对文本执行保存。在我的应用程序的最新版本之前,整个事情都运行得很好。我不明白发生了什么事。我怀疑
嘿伙计们,我正在尝试向 UIToolbar 添加文本,但有一个问题:我想更改字体并有 2 行文本(顶行较小,底行较大)。有什么想法如何做到这一点吗? 提前致谢! 最佳答案 您需要创建一个包含自定义 V
我是一名优秀的程序员,十分优秀!