iOS nav titleView size

Я добавляю UILabel как titleView как self.navigationItem.titleView. Ширина метки равна ширине экрана, а источник — CGZero. После того, как я добавлю элемент левой и правой панели, исходная точка и ширина UILabel изменяются по отношению к экрану. Я должен поместить что-то прямо под UILabel с той же шириной, однако, когда я использую convertRect или convertPoint, я получаю исходные значения, которые я установил для кадра, которые неверны по сравнению с тем, что видно на экране.

Как правильно получить значение нового кадра titleView, как показано на экране?


person kdgwill    schedule 11.09.2015    source источник
comment
Покажите соответствующий код.   -  person rmaddy    schedule 12.09.2015
comment
@rmaddy Я не был точно уверен, что добавить в качестве соответствующего кода, поскольку что-то простое, например, self.navigationItem.titleView = UIView(frame: CGRect(x: 0, y: 0, width: 100000, height: 20)) приведет к такая же проблема. Когда UIView добавляется в качестве заголовка, его размер изменяется из-за левого и правого баритемов. Мой вопрос в том, как получить новый размер относительно экрана, потому что то, что вернется, если я просто получу экран или использую convertRect, - это исходный размер   -  person kdgwill    schedule 12.09.2015
comment
@rmaddy, что я на самом деле делаю, так это устанавливаю ширину и высоту как у nabber, то есть пусть searchBarWidth = navBar.frame.width; пусть searchBarHeight = navBar.frame.height - 10   -  person kdgwill    schedule 12.09.2015


Ответы (1)


Ах, проблема заключалась в том, что я запрашивал размер представления заголовка слишком рано, так как размеры подпредставлений не рассчитываются до следующего прохода в цикле выполнения. Я решил это в основном представлении, так что

navBar.layoutIfNeeded()
var titleViewFrameInTopLevelViewSpace:CGRect = self.navigationItem.titleView!.convertRect(self.navigationItem.titleView!.bounds, toView: self.view)
println(titleViewFrameInTopLevelViewSpace)

Спасибо @rob-mayoff

https://stackoverflow.com/a/8289028/903214

person kdgwill    schedule 12.09.2015