如何使搜索栏可见?当你看到属性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("")}解决方法 首先:UIViweController的JsQMessagesVIEwController子类.这意味着您可以轻松添加子视图.您在Attempt 2中几乎完全正确,但设置不正确的框架.我建议你使用自动布局,如下面的代码:
迅速
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;...// vIEwDIDLoadself.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添加一个搜索栏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)