Iphone UI横向搜索栏宽度错误
当您以横向模式启动时,我的搜索栏稍微向右拉伸过远。如果然后旋转到纵向模式,它仍然稍微过宽。但是,如果您在纵向模式下启动,并且随后将其旋转到横向模式,则可以。这是我的密码Iphone UI横向搜索栏宽度错误,iphone,cocoa-touch,orientation,uisearchbar,landscape,Iphone,Cocoa Touch,Orientation,Uisearchbar,Landscape,当您以横向模式启动时,我的搜索栏稍微向右拉伸过远。如果然后旋转到纵向模式,它仍然稍微过宽。但是,如果您在纵向模式下启动,并且随后将其旋转到横向模式,则可以。这是我的密码 sBar = [[UISearchBar alloc] initWithFrame:CGRectZero]; [sBar sizeToFit]; sBar.delegate = self; sBar.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutores
sBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[sBar sizeToFit];
sBar.delegate = self;
sBar.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:sBar];
再加上sBar.autoresizingMask,我有这个,还有另外两个,没有问题。如果您使用的是IB,请确保其中的宽度正确。答案是在运行其余代码之前将搜索栏添加到视图中
UISearchBar * tempSBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
self.sBar = tempSBar;
[tempSBar release];
[self.view addSubview:sBar];
[sBar sizeToFit];
sBar.delegate = self;
sBar.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleBottomMargin;
我知道这是旧的和不赞成的,但我只是不得不分享。我到处寻找适合我的案子的解决方案。我尝试了所有的建议,但都没有用。然后我偶然发现了这块宝石
// Update search bar frame.
CGRect superviewFrame = self.searchDisplayController.searchBar.superview.frame;
superviewFrame.origin.y = 0.f;
self.searchDisplayController.searchBar.superview.frame = superviewFrame;
一切又变得阳光明媚。谢谢你,彼得
我试过了,但令我惊讶的是,它没有什么不同:S.顺便说一句,我没有在这个屏幕上使用IB。你能做
NSLog(@“%@”,NSStringFromCGRect(sBar.frame))代码>在sizeToFit
调用之后?sBar的宽度比帧的宽度大20-sBar{{0,0},{320,44}帧{{0,0},{300,480}顺便说一下,宽度是320,与帧相同。。。sBar{0,0},{320,44}帧{0,0},{320,460}Mmm。事实上,这些数字加起来是不正确的,因为在风景画中,它应该比肖像画宽得多。顺便问一下,我创建临时搜索栏,让它成为我的搜索栏,然后释放临时搜索栏,对吗?(请记住,我的搜索栏已设置为@property retain)。这是没有意义的还是必要的?我对objective c和内存管理相当陌生。
// Update search bar frame.
CGRect superviewFrame = self.searchDisplayController.searchBar.superview.frame;
superviewFrame.origin.y = 0.f;
self.searchDisplayController.searchBar.superview.frame = superviewFrame;