简体   繁体   中英

NavigationItem titleView is coming at left side for some time then move to Center

I am setting a custom view as titleView of the navigation. When viewcontroller appear its title view comes at left side for a moment and then move to center,what could be wrong? I am using the following code

    let itemImgs: [UIImage] = [UIImage(named: "MORE_Location")!, UIImage(named: "MORE_Department")!, UIImage(named: "By_Teams")!, UIImage(named: "MORE_Status")!]
    self.navigationController?.navigationBar.isTranslucent = false
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

    menuView = BTNavigationDropdownMenu(navigationController: self.navigationController, containerView: self.navigationController!.view, title: AppMessage.EDEmployeePeople, items: items as [AnyObject], itemImgs: itemImgs)
    menuView.cellHeight = 60
    menuView.cellBackgroundColor = UIColor.red
    menuView.cellSelectionColor = UIColor.clear
    menuView.cellSeparatorColor = UIColor.clear
    menuView.shouldKeepSelectedCellColor = false
    menuView.cellTextLabelColor = UIColor.white
    menuView.shouldChangeTitleText = false
    menuView.cellTextLabelFont = UIFont(name: "Helvetica", size: 17)

    if appNeedsAutoResize
    {
        menuView.cellTextLabelFont = UIUtils.getFontForApproprieteField(.subHeadline).font
    }

    menuView.cellTextLabelAlignment = .left // .Center // .Right // .Left
    menuView.arrowPadding = 15
    menuView.animationDuration = 0.5
    menuView.maskBackgroundColor = UIColor.clear
    menuView.maskBackgroundOpacity = 0.3

    menuView.didSelectItemAtIndexHandler = {(indexPath: Int) -> () in

        print("Did select item at index: \(indexPath)")

        if indexPath == 3
        {
            let byStatusViewController = ByStatusViewController(nibName: "ByStatusViewController", bundle: nil)
            //UIUtils.pushViewWhenHideBottom(self, anotherVC: byStatusViewController)
            self.navigationController?.pushViewController(byStatusViewController, animated: true)
        }
        else
        {
            let dropVC = DepartmentViewController(nibName: "DepartmentViewController", bundle: nil)
            switch indexPath
            {
            case 0:
                dropVC.employeeGroupInfo = EmployeeGroupInfo.locationInfo
                break
            case 1:
                dropVC.employeeGroupInfo = EmployeeGroupInfo.departmentInfo
                break
            default:
                dropVC.employeeGroupInfo = EmployeeGroupInfo.teamInfo
                break
            }

           // UIUtils.pushViewWhenHideBottom(self, anotherVC: dropVC)
          self.navigationController?.pushViewController(dropVC, animated: true)
        }
    }

    self.navigationItem.titleView = menuView
}

Try to add constraints of autoresizing masks to your menu view to keep the view centered.

Eg

menuView.autoresizingMask = [.flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin]

我有这个问题,并改变我的功能,自定义我的navigationItem从viewWillAppear()viewDidLoad()解决

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM