2015-12-17 2 views
1

Я сталкиваюсь с этой проблемой, и я не могу найти ответ в Интернете. В основном то, что я пытаюсь сделать, это программно создать UIToolbar с некоторыми UIBarButtonItems.UIBarButtonItems не отображается после создания UIToolbar программно?

Что я сделал (как описано ниже), создайте UIToolbar, а затем установите элементы UIToolbar в массив, содержащий все UIBarButtonItems, которые я хочу.

К сожалению, несмотря на то, UIToolbar показывает вверх, UIBarButtonItems еще показать себя

Любые предложения или объяснения, почему это происходит очень ценится!

class DrawViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     //create bar buttons 
     let deleteBarButton = UIBarButtonItem(image: UIImage(named: "greyDelete"), style: .Plain, target: self, action: "deleteView:") 
     let eraseBarButton = UIBarButtonItem(image: UIImage(named: "greyErase"), style: .Plain, target: self, action: "erase:") 
     let resizeBarButton = UIBarButtonItem(image: UIImage(named: "greyResize"), style: .Plain, target: self, action: "resize:") 
     let viewBarButton = UIBarButtonItem(image: UIImage(named: "greyView"), style: .Plain, target: self, action: "view:") 
     let colorBarButton = UIBarButtonItem(image: UIImage(named: "greyColor"), style: .Plain, target: self, action: "color:") 
     let drawBarButton = UIBarButtonItem(image: UIImage(named: "greyDraw"), style: .Plain, target: self, action: "draw:") 
     let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: self, action: nil) 

     //set up toolbar 
     let toolbarItems = [deleteBarButton, flexibleSpace, eraseBarButton, 
          flexibleSpace, resizeBarButton, flexibleSpace, 
          viewBarButton, flexibleSpace, colorBarButton, 
          flexibleSpace, drawBarButton] 
     let toolbar = UIToolbar(frame: CGRectMake(0, view.bounds.height*0.93, view.bounds.width, view.bounds.height*0.7)) 
     toolbar.barTintColor = UIColor(patternImage: UIImage(named: "blueToolbar")!) 
     toolbar.setItems(toolbarItems, animated: true) 
     self.view.addSubview(toolbar) 
    } 

As you can see only the toolbar show up

And the image names (of the images used to create the UIBarButtons) are the same names as those in the Assets catalog

ответ

2

Я предположил бы, что проблема является любопытным способом вы создаете UIToolbar. Эта линия здесь кажется глубоко подозрительной:

let toolbar = UIToolbar(frame: CGRectMake(0, view.bounds.height*0.93, view.bounds.width, view.bounds.height*0.7)) 

Зачем делать это в 0.7 раза больше высоты вашего вида?

Чтобы устранить эту проблему, создайте панель инструментов без конструктора рамки или с CGRectZero для своего фрейма. Затем используйте sizeToFit(), чтобы сделать его подходящим.

Простейшей альтернативой, если это возможно, является использование UINavigationController и указание его показать свою собственную панель инструментов. Затем вы можете заполнить это, установив свой объект управления toolbarItems в свой массив, и все будет работать без необходимости создавать, размещать или управлять UIToolbar.

+0

Вау теперь я вижу все мои кнопки! Спасибо! Но теперь панель инструментов отображается вверху экрана, а не внизу. Вы знаете, как я могу разместить панель инструментов внизу? – 14wml

+0

Nevermind Я понял это! Но спасибо за вашу помощь! Ты спас меня так много времени! – 14wml

+0

Я рад, что это сработало. Не могли бы вы пометить мой ответ как правильный, чтобы другие могли воспользоваться тоже? Спасибо! – TwoStraws