【问题标题】:UISearchBar width wrong in landscapeUISearchBar 横向宽度错误
【发布时间】:2011-06-24 11:08:35
【问题描述】:

当您以横向模式开始时,我的搜索栏向右拉伸得有点过远。如果然后旋转到纵向模式,它仍然有点太宽。但是,如果您以纵向模式开始,然后将其旋转为横向,则很好。这是我的代码。

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

【问题讨论】:

  • 你可以在sizeToFit 通话后做NSLog(@"%@", NSStringFromCGRect(sBar.frame)); 吗?
  • sBar 的宽度比框架的宽度大 20 - sBar {{0, 0}, {320, 44}} 框架 {{0, 0}, {300, 480} }
  • 顺便说一下,宽度是320,和frame一样... sBar {{0, 0}, {320, 44}} Frame {{0, 0}, {320, 460} }
  • 嗯。实际上这些数字并没有加起来,因为肯定在横向它应该比纵向宽得多

标签: iphone cocoa-touch orientation uisearchbar landscape


【解决方案1】:

答案是在运行其余代码之前将搜索栏添加到视图中。

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

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

【讨论】:

  • 顺便说一句,我是否正确创建临时搜索栏,将其设为我的搜索栏,然后释放临时栏? (请记住,我的搜索栏已设置为 @property 保留)。这是没有意义的还是必要的?我对目标 c 和内存管理还很陌生。
【解决方案2】:
UIViewAutoresizingFlexibleRightMargin 

将它添加到 sBar.autoresizingMask,我和其他 2 个一样,没有问题。如果您使用的是 IB,请确保其中的宽度也正确

【讨论】:

  • 我试过了,但令我惊讶的是它没有任何区别:S。顺便说一句,我没有在这个屏幕上使用 IB。
【解决方案3】:

我知道这已经过时且已被弃用,但我不得不分享。我寻找适合我的情况的解决方案。我尝试了所有建议,但无济于事。然后我偶然发现了这个宝石

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

一切又变得美好而阳光明媚。谢谢彼得 http://petersteinberger.com/blog/2013/fixing-uisearchdisplaycontroller-on-ios-7/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多