我在哪里可以获得UISearchBar中使用的放大镜图标?

时间:2012-08-04 20:17:12

标签: ios cocoa-touch uitextfield uisearchbar

我正在使用UITextField替换UISearchBar并使用这个疯狂的代码“窃取”原始UISearchBar的放大镜图标:

    UISearchBar *originalSearchBar = [[UISearchBar alloc] init];
    for (UIView *searchBarSubview in [originalSearchBar subviews]) {
        if([searchBarSubview isKindOfClass:[UITextField class]]) {
            UITextField *textField = (UITextField *)searchBarSubview;
            [_textField setLeftView:[textField leftView]];
            [_textField setLeftViewMode:UITextFieldViewModeAlways];
        }
    }

正如您可能已经猜到的那样,我不想使用自己的位图。

在Cocoa的某个地方是不是有一个更容易使用的放大镜图标?

4 个答案:

答案 0 :(得分:25)

所以,这是带有unicode字符的代码:

    UILabel *magnifyingGlass = [[UILabel alloc] init];
    [magnifyingGlass setText:[[NSString alloc] initWithUTF8String:"\xF0\x9F\x94\x8D"]];
    [magnifyingGlass sizeToFit];

    [textField setLeftView:magnifyingGlass];
    [textField setLeftViewMode:UITextFieldViewModeAlways];

编辑:对于适合iOS 7风格的简洁外观,请添加Unicode变体选择器\U000025B6

答案 1 :(得分:3)

我在Cocoa中不知道它的任何标准图像(并且在Unicode中也没有它的字符)。

此图像是Dock捆绑包的一部分,但是:

/System/Library/CoreServices/Dock.app/Contents/Resources/ectl_search_magnify.png

答案 2 :(得分:1)

由于我无法获得一个简单的unicode放大镜,我决定看看标准UISearchBox使用什么。事实证明它是放大镜的图像,我已经提取并包含在下面,虽然它是一个非常简单的形状,完全可以重现。

2x Search 3x Search

答案 3 :(得分:0)

使用OSX 10.7.5我找不到ectl_search_magnify.png而是一个简单的

find /System -ipath '*magni*'

找到:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/MagnifyingGlassIcon.icns
/System/Library/PrivateFrameworks/ProKit.framework/Versions/A/Resources/LionPanels.bundle/Contents/Resources/Dark_NSSmallMagnifyingGlass.tiff
/System/Library/PrivateFrameworks/ProKit.framework/Versions/A/Resources/LionPanels.bundle/Contents/Resources/Night_NSSmallMagnifyingGlass.tiff

后两种可能是你想要的(假设你需要一张图片)。