2011-06-24 3 views
4

Моя панель поиска немного растянулась слишком далеко, когда вы начинаете в ландшафтном режиме. Он все еще немного слишком широк, если вы затем вращаетесь в портретном режиме. Тем не менее, это прекрасно, если вы начинаете в портретном режиме, а также затем поворачиваете его в пейзаж. Вот мой код.UISearchBar ширина неправильная в ландшафте

sBar = [[UISearchBar alloc] initWithFrame:CGRectZero]; 
[sBar sizeToFit]; 
sBar.delegate = self; 
sBar.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleBottomMargin; 
[self.view addSubview:sBar]; 
+0

Можете ли вы сделать NSSC (@ "% @", NSStringFromCGRect (sBar.frame)); 'после вызова' sizeToFit'? –

+0

Ширина sBar на 20 больше, чем ширина ширины кадра - sBar {{0, 0}, {320, 44}} Рамка {{0, 0}, {300, 480}} –

+0

В свою очередь, ширина равно 320, то же, что и рама ... sBar {{0, 0}, {320, 44}} Рамка {{0, 0}, {320, 460}} –

ответ

6

Ответ должен был добавить панель поиска к представлению перед запуском остальной части кода.

UISearchBar * tempSBar = [[UISearchBar alloc] initWithFrame:CGRectZero]; 
self.sBar = tempSBar; 
[tempSBar release]; 

[self.view addSubview:sBar]; 
[sBar sizeToFit]; 
sBar.delegate = self; 
sBar.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleBottomMargin; 
+0

Кстати, я прав, чтобы создать панель поиска темпа, сделать эту строку поиска, а затем отпустить панель темпа? (В моей панели поиска установлено значение @property). Разве это бессмысленно или необходимо? Я довольно новичок в управлении объектами c и памятью. –

0
UIViewAutoresizingFlexibleRightMargin 

добавить, что sBar.autoresizingMask, у меня есть, что как хорошо, как другие 2 и не имеют никаких проблем. если вы используете IB, убедитесь, что его правая ширина там также

+0

Я пробовал это, но, к моему удивлению, это не имело значения: S. Кстати, я не использую IB для этого экрана. –

0

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

// Update search bar frame. 
CGRect superviewFrame = self.searchDisplayController.searchBar.superview.frame; 
superviewFrame.origin.y = 0.f; 
self.searchDisplayController.searchBar.superview.frame = superviewFrame; 

И все снова стало красивым и солнечным. Спасибо, Peter, http://petersteinberger.com/blog/2013/fixing-uisearchdisplaycontroller-on-ios-7/

Смежные вопросы