Swift ios 10 NavBar Item 不断增长

Posted

技术标签:

【中文标题】Swift ios 10 NavBar Item 不断增长【英文标题】:Swift ios 10 NavBar Item keeps growing 【发布时间】:2016-11-14 19:43:56 【问题描述】:

我有一个连接到 UIView 的 navBar 控制器,我有一个右栏按钮项,它是一个 V 形。我以编程方式创建了一个搜索栏。如果您单击人字形大约 20-100 次,它会不断增长,直到它离开屏幕。每次单击 V 形时,我都会在搜索栏中看到一个轻微的凸起。由于您不能对 navBar 施加约束,并且固定的空格键按钮项也不起作用。关于在哪里查看或如何解决此问题的任何建议?

func rotateChevron(animated: Bool = true) 
    let chevAnimate = animated ? 0.3 : 0.0
    let chevIsDown = messagePicker.frame.origin.y == self.view.frame.height - (tabBarController?.tabBar.frame.height ?? 0)
    let rotation: CGFloat = chevIsDown ? 0.0 : 180.001
     UIView.animate(withDuration: chevAnimate, animations: 
        self.filterChevron.customView?.transform = CGAffineTransform(rotationAngle: rotation.degreesToRadians)
    , completion: nil)

【问题讨论】:

【参考方案1】:

经过一些研究,我在动画块中放置了一个强制 CGSize (w/h),这似乎解决了这个问题。我还发现变换动画不应该与帧一起使用,因为它每次都会移动图像的边界,这就是人字形起作用的原因。

func rotateChevron(animated: Bool = true) 
    let chevAnimate = animated ? 0.3 : 0.0
    let chevIsDown = messagePicker.frame.origin.y == self.view.frame.height - (tabBarController?.tabBar.frame.height ?? 0)
    let rotation: CGFloat = chevIsDown ? 0.0 : 180.001
    filterChevron.customView?.frame.size = CGSize(width: 35, height: 30)
     UIView.animate(withDuration: chevAnimate, animations: 
        self.filterChevron.customView?.transform = CGAffineTransform(rotationAngle: rotation.degreesToRadians)
    , completion: nil)

【讨论】:

以上是关于Swift ios 10 NavBar Item 不断增长的主要内容,如果未能解决你的问题,请参考以下文章

UI NavBar高度的自定义(不同视图需要不同高度的nav bar)

swift 使Navbar大标题

如何在 swift 4 中更改 NavBar 标题文本颜色?

1块:ion-item

不在导航栏上制作栏按钮项目和标题(iOS,Swift)

Bootstrap Navbar随着smoothScroll消失