【问题标题】:UINavigationItem: detect touchUINavigationItem:检测触摸
【发布时间】:2017-01-16 13:18:04
【问题描述】:

是否可以在 UINavigationItem检测 触摸

我想在用户点击 UINavigationItem 时创建一个小动画。

换句话说:

  • 我的标题包含太多文本,因此我不得不截断它们
  • 我希望用户在按下导航项时能够阅读完整的标题文本
  • 为此,我需要:

    1. 检测触摸
    2. 动画字符串/文本(我可以有一个计时器来动画这个,但是我想知道 iOS 中是否已经有一个内置函数 - 你知道吗?)

【问题讨论】:

标签: ios animation ios10 uinavigationitem


【解决方案1】:

UINavigationItem 直接继承自 NSObject,正如 johnryu 在 cmets 中所述,但您可以通过添加 UIView 代替标题来执行更复杂的操作,而不是在导航栏中显示标题。
这个视图可以由一个显示实际标题的 UILabel 和一个透明按钮组成。
透明按钮可以具有触发弹出窗口的操作,其中包含“触地”事件或“内部触地”的全文。
或者,您可以在该视图中添加一个简单的点击手势识别器。

【讨论】:

    【解决方案2】:

    尝试将自定义 titleView 分配给 UINavigationItem。使它成为一个带有标签的 UIView,您将在其中包含文本。在默认状态下,标签的大小与其父视图相同。确保 UIView 已将 clipsToBounds 设置为 YES/true。

    将 UITapGestureRecognizer 附加到标签或视图以切换到“动画”状态并返回。

    当进入动画状态时,使标签足够宽以有足够的空间容纳整个字符串并动画其在容器内的移动,可以使用 NSString 的boundingRectWithSize:options:attributes:context: 来计算合适的宽度。

    然后只需添加一个动画,其中标签向左移动直到其右端可见,如果它重复可能最好。

    【讨论】:

    • 是否可以将 UIView 添加到 UINavigationItem?
    • 不,您可以将新的 UIView(作为子视图)添加到另一个 UIView。 UINavigationItem 不是 UIView。
    猜你喜欢
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    相关资源
    最近更新 更多