Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UI横向搜索栏宽度错误_Iphone_Cocoa Touch_Orientation_Uisearchbar_Landscape - Fatal编程技术网

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;