大佬教程收集整理的这篇文章主要介绍了ios – 如何向JSQMessagesViewController添加一个搜索栏,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何使搜索栏可见?当你看到属性topContentAdditionalInset看起来应该是可能的.这是我的代码与我的尝试:
override func viewDidLoad() { super.viewDidLoad() self.inputToolbar.removeFromSuperview() self.searchBar.removeFromSuperview() self.topContentAdditionalInset = 44 self.searchBar.frame = CGRect(x: 0,y: 25,width: 320,height: 44) // Attempt 1 // self.collectionView.addSubview(self.searchBar) // Attempt 2 // self.view.addSubview(self.searchBar) // Attempt 3 // self.navigationController?.navigationBar.addSubview(self.searchBar) // Attempt 4 // self.inputToolbar.addSubview(self.searchBar) // Attempt 5 self.collectionView.superview!.addSubview(self.searchBar) }
更新:
以下代码似乎工作正常.它的问题是:
– 它是collectionView的一个孩子,因此将滚动显示内容.将它添加到.superview不起作用.
– 当搜索栏获得焦点时,它会向下滚动44像素.
var keepRef:JSQmessagesInputToolbar! var searchBar:UISearchBar! override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) if self.inputToolbar.superview != nil { keepRef = self.inputToolbar self.inputToolbar.removeFromSuperview() } self.topContentAdditionalInset = 44 if searchBar == nil { searchBar = UISearchBar(frame: CGRect(x: 0,y: -44,height: 44)) searchBar.delegate = self self.collectionView.scrollsToTop = true self.collectionView.addSubview(searchBar) } self.filterContentForSearchText("") }
更新2:
基于Sergey的答案(其工作原理),我现在使用以下代码:
var keepRef:JSQmessagesInputToolbar! var searchBar:UISearchBar! override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) self.inputToolbar.hidden = true self.topContentAdditionalInset = 44 self.collectionView.scrollsToTop = true if searchBar == nil { searchBar = UISearchBar() searchBar.setTranslatesAutoresizingMaskIntoConsTraints(false) searchBar.delegate = self self.view.addSubview(searchBar) let views = ["searchBar" : self.searchBar]; searchBar.addConsTraints(NSLayoutConsTraint.consTraintsWithVisualFormat("[searchBar(44)]",options: NSLayoutFormatOptions(0),metrics: nil,views: views)) self.view.addConsTraints(NSLayoutConsTraint.consTraintsWithVisualFormat("|[searchBar]|",views: views)) self.view.addConsTraint(NSLayoutConsTraint(item: searchBar,attribute: .Top,relatedBy: .Equal,toItem: self.topLayoutGuide,attribute: .bottom,multiplier: 1.0,constant: 0.0)) } self.filterContentForSearchText("") }
迅速
var searchBar: UISearchBar!; override func viewDidLoad() { super.viewDidLoad() searchBar = UISearchBar() searchBar.setTranslatesAutoresizingMaskIntoConsTraints(false) self.view.addSubview(searchBar) let views = ["searchBar" : self.searchBar]; searchBar.addConsTraints(NSLayoutConsTraint.consTraintsWithVisualFormat("[searchBar(44)]",views: views)) self.view.addConsTraints(NSLayoutConsTraint.consTraintsWithVisualFormat("|[searchBar]|",views: views)) self.view.addConsTraint(NSLayoutConsTraint(item: searchBar,constant: 0.0)) }
目标C
@property (nonatomic,strong) UISearchBar *searchBar; ... // viewDidLoad self.searchBar = [UISearchBar new]; self.searchBar.translatesAutoresizingMaskIntoConsTraints = NO; [self.view addSubview:self.searchBar]; NSDictionary *views = @{@"searchBar" : self.searchBar}; [self.searchBar addConsTraints:[NSLayoutConsTraint consTraintsWithVisualFormat:@"[searchBar(44)]" options:0 metrics:nil views:views]]; [self.view addConsTraints:[NSLayoutConsTraint consTraintsWithVisualFormat:@"|[searchBar]|" options:0 metrics:nil views:views]]; [self.view addConsTraint:[NSLayoutConsTraint consTraintWithItem:self.searchBar attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]];
以上是大佬教程为你收集整理的ios – 如何向JSQMessagesViewController添加一个搜索栏全部内容,希望文章能够帮你解决ios – 如何向JSQMessagesViewController添加一个搜索栏所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。