【问题标题】:Set background color for top safe area only in iOS 11仅在 iOS 11 中设置顶部安全区域的背景颜色
【发布时间】:2018-04-25 20:43:20
【问题描述】:

我是 Swift 新手。我以编程方式设置了我的顶部栏。它适用于除 iOS 版本 11 之外的所有版本。

我想改变iPhone X中安全区域的背景颜色。目前我刚刚添加了以下代码来隐藏状态栏。

 override var prefersStatusBarHidden: Bool {
    return true
}

我已经使用代码创建了顶栏:

//Top Bar
    let topBar = UIView(frame:CGRect(x: 0,y: 0, width: width, height: 60))
    topBar.backgroundColor = UIColor.white
    topBar.layer.shadowColor = UIColor.gray.cgColor
    topBar.layer.shadowOffset = CGSize(width: 0, height: 3)
    topBar.layer.shadowOpacity = 1
    topBar.layer.masksToBounds = false
    topBar.layer.shadowRadius = 8.0;
    //ImageView - Back Button
    let backBtn = UIButton(frame:CGRect(x: 25, y: 18, width: 18, height: 34))
    let backBtnImage = UIImage(named: "back_button") as UIImage?
    backBtn.setImage(backBtnImage, for: .normal)
    backBtn.layer.masksToBounds = true
    backBtn.addTarget(self,action:#selector(backButtonClicked),
                      for:.touchUpInside)
    //Label - Title
    let titleLabel = UILabel(frame:CGRect(x: width * 0.3, y: 13, width: width * 0.55, height: 40))
    titleLabel.text = "Favorites"
    titleLabel.contentMode = UIViewContentMode.center
    //include all in view
    topBar.addSubview(titleLabel)
    topBar.addSubview(backBtn)

    containerView.addSubview(topBar)

有没有一种方法可以在不使用 UINavigationBar 或设置状态栏的情况下做到这一点。

【问题讨论】:

  • 使用默认导航栏,这是最简单有效的方式
  • 使用默认导航控制器...阅读此stackoverflow.com/questions/46344381/…safeAreaLayoutGuide 是 UIView 的属性
  • 有没有不使用导航栏的方法。
  • 您是否使用自定义视图而不是导航栏
  • 然后将您的自定义视图添加到导航栏

标签: ios iphone swift3 safearealayoutguide


【解决方案1】:

嗨,你也可以试试这个, 需要添加一个与您在标题视图中设置的背景相同的视图并添加到容器父视图。 请参考以下代码

//Top Bar


    let safeAreaView = UIView(frame:CGrect(x: 0,y: 0, width: width, height: 40))
    safeAreaView.backgroundColor = UIColor.white
    self.view.addSubview(safeAreaView)

    let topBar = UIView(frame:CGRect(x: 0,y: 0, width: width, height: 60))
    topBar.backgroundColor = UIColor.white
    topBar.layer.shadowColor = UIColor.gray.cgColor
    topBar.layer.shadowOffset = CGSize(width: 0, height: 3)
    topBar.layer.shadowOpacity = 1
    topBar.layer.masksToBounds = false
    topBar.layer.shadowRadius = 8.0;
    //ImageView - Back Button
    let backBtn = UIButton(frame:CGRect(x: 25, y: 18, width: 18, height: 34))
    let backBtnImage = UIImage(named: "back_button") as UIImage?
    backBtn.setImage(backBtnImage, for: .normal)
    backBtn.layer.masksToBounds = true
    backBtn.addTarget(self,action:#selector(backButtonClicked),
                      for:.touchUpInside)
    //Label - Title
    let titleLabel = UILabel(frame:CGRect(x: width * 0.3, y: 13, width: width * 0.55, height: 40))
    titleLabel.text = "Favorites"
    titleLabel.contentMode = UIViewContentMode.center
    //include all in view
    topBar.addSubview(titleLabel)
    topBar.addSubview(backBtn)

    containerView.addSubview(topBar)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多