Objective C - 改变实现外观 api 的控件的外观

     2023-03-13     77

关键词:

【中文标题】Objective C - 改变实现外观 api 的控件的外观【英文标题】:Objective C - Altering appearance of control implementing appearance api 【发布时间】:2014-06-24 08:19:11 【问题描述】:

我正在使用外观api自定义UISearchBar

[[UISearchBar appearance] setSearchFieldBackgroundImage:searchBackground forState:UIControlStateNormal];
[[UISearchBar appearance] setBackgroundImage:backgroundImage];
[[UISearchBar appearance] setScopeBarBackgroundImage:backgroundImage];
[[UISearchBar appearance] setBackgroundColor:[UIColor clearColor]];

我在一个作为其他类的父类的类中使用它,以便在所有 child 类上实现效果。

现在我需要自定义一个包含UISearchBar 的子类。我试过link

但是当外观在超类上完成时,我无法获得这种效果。如果我删除 appearance 那么我就能产生这种效果。

如何通过实现 appearance api 来做到这一点?

【问题讨论】:

【参考方案1】:

基于Apple's documentation

    [[UISearchBar appearanceWhenContainedIn:[yourSubClassedViewControllerWhichHasSearchbar class], nil]
     setBackgroundColor:[UIColor orangeColor]];

【讨论】:

【参考方案2】:

我用下面的代码解决了这个问题

[[UISearchBar appearance] setSearchFieldBackgroundImage:nil forState:UIControlStateNormal];
[[UISearchBar appearance] setBackgroundImage:nil];
[[UISearchBar appearance] setBackgroundColor:[UIColor clearColor]];

for (id img in srchbar.subviews) 
    if ([img isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) 
        [img removeFromSuperview];
    

编辑: 以上解决方案可能会导致其他显示错误。所以最好的解决方案被标记为正确的。

【讨论】:

Objective c - iCarousel 库

】Objectivec-iCarousel库【英文标题】:Objectivec-iCarouselLibrary【发布时间】:2013-11-0711:52:32【问题描述】:我正在实现iCarousel(使用Rotary)来显示一堆图像,但我需要在两个后面的图像中实现一点点倾斜,如下图所示。这可能吗?如... 查看详情

objective-c外观模式--简单介绍和使用

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 在以下情况下可以考虑使用外观模式:(1)设计初期阶段,应该有意识的将不同层分离,层与层之... 查看详情

Objective C 我们怎样才能改变按钮的背景图像,当它被点击然后恢复正常?

】ObjectiveC我们怎样才能改变按钮的背景图像,当它被点击然后恢复正常?【英文标题】:ObjectiveCHowcanwechangethebackgroundimageofabuttoninjustwhenitisclickedandthengobacktonormal?【发布时间】:2018-02-2311:38:21【问题描述】:[myButtonsetImage:[UIImageim... 查看详情

objective-c-改变nsmutablearray的特定元素

NSMutableArray改动元素,使用-insertObject:atIndex:和-replaceObjectAtIndex:withObject:都能够,即通过插入(insert)和替换(replace)能够实现.演示样例://降低button监听-(void)onSubBtnPressed:(UIButton*)sender{NIDPRINTMETHODNAME();NSIntegert 查看详情

设置样式表后 Qt Customwidget 外观没有改变

】设置样式表后QtCustomwidget外观没有改变【英文标题】:QtCustomwidgetappearancenotchangingaftersettingstylesheet【发布时间】:2020-01-0509:43:32【问题描述】:我想提供一个系统来为我的应用程序编写自己的样式表。我像这样加载样式表:我... 查看详情

在宏中使用 Objective C API 登录静态库

】在宏中使用ObjectiveCAPI登录静态库【英文标题】:UsingObjectiveCAPIinMacrotoLoginstaticlib【发布时间】:2016-01-2712:27:54【问题描述】:我想做这样的事情,但在第一个“if”时出错。#if([[[NSProcessInfoprocessInfo]arguments]containsObject:@"-com.myproj... 查看详情

Objective C 中的 RSA 实现

】ObjectiveC中的RSA实现【英文标题】:RSAimplementationsinObjectiveC【发布时间】:2012-04-3015:21:20【问题描述】:我正在开发一个使用RSAAlgorithm的Objective-C简单应用程序。我想在服务器/客户端通信上使用它。我在iOS/iPhone中的RSA算法实现... 查看详情

前端 - 当我们减小缩放大小时,为啥有些网站会改变它们的外观

】前端-当我们减小缩放大小时,为啥有些网站会改变它们的外观【英文标题】:Frontend-Whysomewebsitechangethewaytheylookwhenwedecreasezoomsize前端-当我们减小缩放大小时,为什么有些网站会改变它们的外观【发布时间】:2020-10-1708:00:33【... 查看详情

在 Objective-C 类中混合 C 函数

】在Objective-C类中混合C函数【英文标题】:MixingCfunctionsinanObjective-Cclass【发布时间】:2009-04-2911:44:42【问题描述】:我正在编写一个Objective-C类,但它使用了一个用C编写的API。这通常很好,因为将C调用与Objective-C调用混合会导致... 查看详情

如何使用objective c实现苹果手表皇冠代表

】如何使用objectivec实现苹果手表皇冠代表【英文标题】:Howtoimplementapplewatchcrowndelegateusingobjectivec【发布时间】:2018-05-2112:54:11【问题描述】:我正在开发需要使用Crown更新标签值的AppleWatch应用程序。我已经使用swift实现了该功... 查看详情

进一步澄清“如何用objective c实现UISearchController”

】进一步澄清“如何用objectivec实现UISearchController”【英文标题】:Furtherclarificationof"HowtoimplementUISearchControllerwithobjectivec"【发布时间】:2015-11-2500:04:59【问题描述】:我一直在尝试通过关注***线程来实现UISearchController:How... 查看详情

Objective C 使用“完成”按钮实现 UIPickerView

】ObjectiveC使用“完成”按钮实现UIPickerView【英文标题】:ObjectiveCimplementingaUIPickerViewwitha"Done"button【发布时间】:2012-05-2214:56:40【问题描述】:我正在尝试在UIPickerView中实现一个“完成”按钮,类似于link下的按钮我查看... 查看详情

Objective C 中的类别是如何实现的?

】ObjectiveC中的类别是如何实现的?【英文标题】:HowarecategoriesimplementedinObjectiveC?【发布时间】:2011-08-1112:57:29【问题描述】:作为程序员,我知道如何使用类别,但我很好奇它们是如何实现的。编译器是否将它们编译为从静态... 查看详情

更改表格视图中的单元格高度Objective C

】更改表格视图中的单元格高度ObjectiveC【英文标题】:ChangingcellheightintableviewObjectiveC【发布时间】:2009-06-0103:42:15【问题描述】:我希望我的单元格的高度会根据其中显示的文本而改变。文本会有所不同,我基本上希望单元格... 查看详情

改变表单元素的外观

ie10以下不支持使用appearance改变webkit浏览器的默认外观webkit内核浏览器具备私有属性"-webkit-appearance"可以改变元素的外观,该属性非常强大,适合大部分标签,这对于webkit的页面优化带来极大的帮助。禁用表单input、select元素的默... 查看详情

OpenCV 与 Objective C 与 Objective C++

】OpenCV与ObjectiveC与ObjectiveC++【英文标题】:OpenCVwithObjectiveCvsObjectiveC++【发布时间】:2014-04-0122:10:10【问题描述】:在iOS项目中使用OpenCV时,互联网上的大多数文章都建议将.m更改为.mm。然而,既然ObjectiveC是C++的严格超集,为什... 查看详情

在 UILabel 上使用外观代理会使我的应用程序被拒绝,因为它会改变 UIAlertView?

...ILabel上使用外观代理会使我的应用程序被拒绝,因为它会改变UIAlertView?【英文标题】:WillusingappearanceproxyonUILabelgetmyapprejectedbecauseitaltersUIAlertView?【发布时间】:2014-07-0715:48:58【问题描述】:我希望自定义我的应用程序中的所有... 查看详情

使用 spritekit 和目标 c 更改英雄的外观

...:36:40【问题描述】:有没有可能,如果有的话,我该如何改变游戏中的英雄外观。我想做的是制作类似选项的东西,用户可以选择英雄的样子。这是我的项目计划选项应如下所示:我只为英雄节点制作了单独的文件,对于英雄外... 查看详情