首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSearchField在SwiftUI中的高度变化

NSSearchField在SwiftUI中的高度变化
EN

Stack Overflow用户
提问于 2021-01-11 21:25:52
回答 1查看 326关注 0票数 2

我正在使用SwiftUI 1.0。

我为SwiftUI创建了一个搜索栏,如下所示:

代码语言:javascript
复制
import SwiftUI

struct Searchbar: NSViewRepresentable {
    class Coordinator: NSObject, NSSearchFieldDelegate {
        var parent: Searchbar
        
        init(_ parent: Searchbar) {
            self.parent = parent
        }
        
        func controlTextDidChange(_ notification: Notification) {
            guard let searchField = notification.object as? NSSearchField else {
                log.error("Unexpected control in update notification", source: .ui)
                return
            }
            self.parent.search = searchField.stringValue
        }
    }
    
    @Binding var search: String
    
    func makeNSView(context: Context) -> NSSearchField {
        let searchfield = NSSearchField(frame: .zero)    
        return searchfield
    }
    
    func changeSearchFieldItem(searchfield: NSSearchField, sender: AnyObject) -> NSSearchField {
        //Based on the Menu item selection in the search field the placeholder string is set
        (searchfield.cell as? NSSearchFieldCell)?.placeholderString = sender.title
        return searchfield
    }
    
    func updateNSView(_ searchField: NSSearchField, context: Context) {
        searchField.stringValue = search
        searchField.delegate = context.coordinator
    }
    
    func makeCoordinator() -> Coordinator {
        return Coordinator(self)
    }
}

到目前为止,在我的视图:Searchbar(search: $searchText)中使用它时,它运行得很好。

我想知道是否可以将NSSearchField的高度更改为具有类似于Maps.app中所看到的视图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-19 11:55:40

更新:如果你在大苏尔,你也可以把controlSize设置为.largehttps://developer.apple.com/documentation/appkit/nscontrol/controlsize/large

您可以添加一个高度约束:

代码语言:javascript
复制
func makeNSView(context: Context) -> NSSearchField {
    let searchfield = NSSearchField(frame: .zero)  
    searchfield.translatesAutoresizingMaskIntoConstraints = false
    searchfield.heightAnchor.constraint(greaterThanOrEqualToConstant: 40).isActive = true

    return searchfield
}

…在macOS 11.1BigSur.不幸的是,焦点环没有调整其高度。你可以这样把它藏起来

代码语言:javascript
复制
    searchTextField.focusRingType = .none

…但在大多数情况下,这似乎不可取。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65674746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档