我有以下代码,这是它的一部分, 应该设置一个工具栏,并在屏幕上 旋转它将其删除,调整搜索框的大小 然后显示它,除非它没有正确调整大小......
(我找不到它赢得调整大小,框架调整大小的原因)
搜索的左侧和右侧还有其他按钮 被定义为 UIBarButtonSystemItemFlexibleSpace和UIBarButtonItemStylePlain, "应该"搜索栏调整大小时自动重新定位...
所有这些都是在没有故事板的情况下完成的,以编程方式完成。
in loadView:
LtoolBar = [[UIToolbar alloc] init];
LsearchBox = [[UISearchBar alloc] init];
LsearchBox.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
LsearchBox.delegate = self;
LsearchContainer = [UIView new];
[LsearchContainer addSubview:LsearchBox];
LbtnSearchBox = [[UIBarButtonItem alloc] initWithCustomView:LsearchContainer];
[LtoolBar setItems:[NSArray arrayWithObjects: LbtnSearchBox, nil] animated:NO];
in viewDidLoad I add the toolbar (see rotate below)
[self.view addSubview:LtoolBar];
in willRotateToInterfaceOrientation:
[LtoolBar removeFromSuperview];
in didRotateFromInterfaceOrientation:
if (UIInterfaceOrientationIsPortrait(fromInterfaceOrientation))
CGRect bounds = CGRectMake(0, 0, 280, 30);
if (UIInterfaceOrientationIsLandscape(fromInterfaceOrientation))
CGRect bounds = CGRectMake(0, 0, 360, 30);
[LsearchContainer setFrame:bounds];
[self.view addSubview:LtoolBar];
[LtoolBar sizeToFit];
感谢您的帮助!
更新1:
我能够通过在最后一行之后添加调整大小动画来解决这个问题 取决于框架是280还是360并将其设置为尺寸+ 1 ...
可怕的黑客,但它调整了搜索栏的大小......
[UIView animateWithDuration:0 delay:0 options:UIViewAnimationOptionLayoutSubviews
animations:^{ [LsearchContainer setFrame:CGRectMake(0, 0, 281, 30)]; } completion:nil];
我仍然想知道如何在没有黑客的情况下修复它......
更新2:
而不是动画,这也解决了问题:
[LsearchBox removeFromSuperview];
[LsearchContainer addSubview:LsearchBox];
有更好的方法吗?