使用Swift 3在UICollectionView中添加UINavigation Back按钮

时间:2017-05-23 09:43:00

标签: swift3 uicollectionview uinavigationbar uinavigationitem

我在集合视图控制器中添加了左导航后退按钮和代码。

//Add Navigation Bar

    navbar.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin, .flexibleRightMargin]
    navbar.delegate = self

    UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green:49.0/255.0, blue:79.0/255.0, alpha:0.1)
    UINavigationBar.appearance().tintColor = UIColor.white
    UINavigationBar.appearance().isTranslucent = true
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]

    navItem.title = prefs.value(forKey: "PROVIDER_NAME") as! String?

    let image = UIImage(named: "back_image")
    navItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(addTapped))

    navItem.leftBarButtonItem?.imageInsets = UIEdgeInsetsMake(0, 0, 0, 0)


enter image description here
后退按钮靠近左侧。我想从左边添加大约10px的填充。
所以,我把代码改为了

 navItem.leftBarButtonItem?.imageInsets = UIEdgeInsetsMake(0, 15, 0, 0)

但它不起作用,图像后退按钮看起来更小。如何在后退按钮的左侧添加空格?

1 个答案:

答案 0 :(得分:2)

我建议您使用简单UINavigationBar替换UIView。这样您就可以完全控制导航栏的布局。它不会只是一个透明的UIView,里面有一个后退按钮和一个标题标签。就这么简单。

真正的UINavigationBar不止于此。它意味着管理一堆UINavigationItem个对象。它调整自身取决于当前项目,并知道如何进行从一个状态到另一个状态的动画(甚至交互式)过渡。这就是为什么你不能改变酒吧的外观。您不应将其视为常规视图。

<强>更新

实现这一目标的另一种方法有点棘手。您可以从故事板中完全实现它,而且不需要外观混乱。

  1. UINavigationBar添加到视图控制器。
  2. UIView的左侧添加普通UINavigationBar,并使其背景颜色完全透明。
  3. UIButton添加到上一步添加的视图中,并将后退图标设置为其图像。
  4. 为按钮添加约束,使其与超级视图的右侧对齐。
  5. 调整视图的宽度,使后退按钮的位置正好在您想要的位置。
  6. 这是故事板中的视图层次结构: A view hierarchy

    这就是UINavigationBar的样子(对你而言,背景将是透明的): <code>UINavigationBar</code>