iOS版 - 使用UISearchDisplayController用的UISearchBar是在的

2019-06-27 22:52发布

有没有人使用UISearchDisplayController与一个UISearchBar是在UIToolbar一个的UIBarButtonItem试过吗?

我希望关于如何成功做到这一点的提示。

目前只要搜索控制器弹出它重绘的UISearchBar,我艰难地维持着相似的外观到UIToolbar

Answer 1:

通常你不会想要把一个搜索栏工具栏里面,但是,似乎你想要做的相似,我做了一件。

因此,这里是我是如何做到的,它可以被称为黑客,但它就像一个魅力:)

首先,你必须把它架在这样的界面生成器:

请注意,搜索不工具栏的孩子,相反,它是以上。

搜索栏应该有“晴彩”的背景和灵活的左,右和宽度自动尺寸口罩。

你把1个像素的标签与黑色背景的工具栏的下方,即。 [X = 0,Y = 44,宽度= 320或框架的宽度,高度= 1],还灵活左,右和宽度自动尺寸调整masks.This是隐藏你得到的一个可见的像素,搜索显示控制器显示该表后视图。 尝试没有它明白我的意思。

您在安装任何工具栏项目,并确保有网点为他们,因为你会需要这些。

现在的代码...

当你开始搜索:

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
    // animate the search bar to the left ie. x=0
    [UIView animateWithDuration:0.25f animations:^{
        CGRect frame = controller.searchBar.frame;
        frame.origin.x = 0;
        controller.searchBar.frame = frame;
    }];
    // remove all toolbar items
    [self.toolbar setItems:nil animated:YES];
}

当您结束搜索

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
{
    // animate search bar back to its previous position and size
    // in my case it was x=55, y=1
    // and reduce its width by the amount moved, again 55px
    [UIView animateWithDuration:0.25f 
                          delay:0.0f
                        // the UIViewAnimationOptionLayoutSubviews is IMPORTANT,
                        // otherwise you get no animation
                        // but some kind of snap-back movement 
                        options:UIViewAnimationOptionLayoutSubviews 
                     animations:^{
                         CGRect frame = self.toolbar.frame;
                         frame.origin.y = 1;
                         frame.origin.x = 55;
                         frame.size.width -= 55;
                         controller.searchBar.frame = frame;
                     } 
                     completion:^(BOOL finished){
                         // when finished, insert any tool bar items you had
                         [self.toolbar setItems:[NSArray arrayWithObject:self.currentLocationButton] animated:YES];
                     }];
}

有了这个,我得到一个漂亮的动画了:)



文章来源: iOS - using UISearchDisplayController with UISearchBar that is UIBarButtonItem in UIToolbar