天道酬勤,学无止境

为 Apple Watch 复杂功能设置 tintColor(Setting tintColor for Apple Watch complication)

问题

我正在尝试为模块化大型复杂功能设置标题文本颜色。

我已经自定义了表盘以使用多色。

但是,当我构建并运行此代码时,标题文本颜色仍然是白色(这是默认值)。

为什么不更新颜色?

private func templateForClassModularLarge(className: Schedule) -> CLKComplicationTemplateModularLargeStandardBody {
    let template = CLKComplicationTemplateModularLargeStandardBody()
    let headerTextProvider = CLKSimpleTextProvider(text: "My Schedule", shortText: "Schedule")
    headerTextProvider.tintColor = UIColor(red: 101, green: 153, blue: 255, alpha: 1)
    template.headerTextProvider = headerTextProvider

    template.body1TextProvider = CLKTimeIntervalTextProvider(startDate: className.start, endDate: className.end)
    template.body2TextProvider = CLKSimpleTextProvider(text: className.description, shortText: className.shortDescription)

    return template
}
回答1

UIColor参数类型是CGFloat ,指定为 0.0 到 1.0 之间的值。

因为您的 RGB 参数大于 1,所以颜色最终为白色,即:

UIColor(red: 1, green: 1, blue: 1, alpha: 1)

要解决此问题,只需将 tintColor 更改为

headerTextProvider.tintColor = UIColor(red: 101/255, green: 153/255, blue: 255/255, alpha: 1)

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Setting tintColor for Apple Watch complication
    I am trying to set the header text color for a Modular Large complication. I have already customized the watch face to use Multicolor. However, when I build and run this code, the header text color is still white (which is the default). Why isn't the color updating? private func templateForClassModularLarge(className: Schedule) -> CLKComplicationTemplateModularLargeStandardBody { let template = CLKComplicationTemplateModularLargeStandardBody() let headerTextProvider = CLKSimpleTextProvider(text: "My Schedule", shortText: "Schedule") headerTextProvider.tintColor = UIColor(red: 101, green: 153
  • 启动应用程序的 WatchOS3 并发症(WatchOS3 Complication that launches App)
    问题 我想为 watchOS 3 创建一个复杂功能,它只会启动我的应用程序。 我使用 XCode 来创建 ComplicationController: class ComplicationController: NSObject, CLKComplicationDataSource { // MARK: - Timeline Configuration func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) { handler([.forward, .backward]) } func getTimelineStartDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { handler(nil) } func getTimelineEndDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) {
  • 如何在iOS和WatchKit中更改图像tintColor(How can I change image tintColor in iOS and WatchKit)
    问题 我有一个名为“ theImageView”的UIImageView,UIImage具有单色(透明背景),就像下面的左黑心一样。 如何按照iOS 7+导航栏图标中使用的着色方法,在iOS 7或更高版本中以编程方式更改此图像的着色颜色? 此方法也可以在Apple Watch应用程序的WatchKit中使用吗? 回答1 的iOS 对于iOS应用,在Swift 3、4或5中: theImageView.image = theImageView.image?.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red 对于Swift 2: theImageView.image = theImageView.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) theImageView.tintColor = UIColor.redColor() 同时,现代的Objective-C解决方案是: theImageView.image = [theImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [theImageView
  • WatchKit 2 复杂文本仅显示在预览中(WatchKit 2 Complication Text Only Shows Up in Preview)
    问题 我正在尝试为 watchkit2 开发一个非常简单的复杂功能,它从一个简单的文本提供者那里说“嗨”。 我设法实现了一些奇怪的行为; 单击复杂功能或从自定义表盘屏幕预览时,我可以看到文本,但在显示表盘时看不到。 看一看: 任何想法可能导致这种情况? 我的文本提供程序看起来像这样 var textProvider: CLKSimpleTextProvider override init() { textProvider = CLKSimpleTextProvider() textProvider.text = "Hi" textProvider.shortText = "HI" textProvider.tintColor = UIColor.whiteColor() super.init() } 我的getPlaceholderTemplateForComplication看起来像 func getPlaceholderTemplateForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTemplate?) -> Void) { // This method will be called once per supported complication, and
  • iOS7 UILabel 采用与窗口相同的 tintColor(iOS7 UILabel to adopt same tintColor as window)
    问题 我知道对于UIButton和UIBarButtonItem类的元素,它们自动假定window.tintColor作为主要颜色,如果我在应用程序中随时将新的 tintColor 设置为 window ,则会立即更改。 我想知道是否有任何方法可以使UILabel元素遵循相同的模式,一旦创建,它们会自动假定其默认颜色为window.tintColor并且如果在我的应用程序运行时内的任何时间更改window.tintColor也会导致更改UILabel tintColour 自动? 我希望这是有道理的。 回答1 UILabels是UIView的子类,因此当您在 iOS 7 中运行时,它们将具有tintColor属性,并且如果它们的色调颜色设置为nil (默认值),则会从其父视图继承该颜色。 来自苹果的文档: 默认情况下,视图的色调颜色为 nil,这意味着该视图使用其父级的色调。 这也意味着当你向一个视图询问它的色调颜色时,它总是返回一个颜色值,即使你没有设置一个。 但是,您还会问“在我的应用程序运行时中的任何时间更改 window.tintColor 是否也会导致自动更改 UILabel tintColour?” Apple 建议您不要在屏幕上显示项目时更改色调: 通常,最好在视图离屏时更改视图的色调颜色。 我猜这是因为没有保证所有各种 UI 元素都会检测到 tintColor
  • 如何产生类似于iOS 7模糊视图的效果?(How can I produce an effect similar to the iOS 7 blur view?)
    问题 我正在尝试从Apple公开发布的iOS 7示例屏幕中复制这种模糊的背景: 这个问题建议对下面的内容应用CI过滤器,但这是一种完全不同的方法。 显然,由于多种原因,iOS 7并未捕获以下视图的内容: 做一些粗略的测试,捕获下面视图的屏幕快照,并使用半径足够大以模仿iOS 7的模糊样式的CIGaussianBlur滤镜,即使在模拟器上也要花费1-2秒。 iOS 7模糊视图能够对动态视图(例如视频或动画)进行模糊处理,而不会出现明显的延迟。 谁能假设他们会使用什么框架来产生这种效果,以及是否有可能使用当前的公共API来产生类似的效果? 编辑:(摘自评论)我们并不完全知道苹果公司是如何做到的,但是我们可以做一些基本的假设吗? 我们可以假设他们正在使用硬件,对吗? 效果是否在每个视图中都是独立的,以至于效果实际上不知道其背后是什么? 还是必须根据模糊的工作原理来考虑模糊背后的内容? 如果效果背后的内容相关,我们是否可以假设Apple正在接收以下内容的“提要”,并不断对其进行模糊处理? 回答1 为什么要麻烦复制效果? 只需在视图后面绘制一个UIToolbar。 myView.backgroundColor = [UIColor clearColor]; UIToolbar* bgToolbar = [[UIToolbar alloc] initWithFrame:myView.frame
  • 如何在iPhone中为透明的PNG图像着色?(How to tint a transparent PNG image in iPhone?)
    问题 我知道可以通过在矩形图像上绘制CGContextFillRect并设置混合模式来着色矩形图像。 但是,我不知道如何对透明图像(例如图标)进行着色。 之所以必须这样做是因为SDK本身就是在这样的标签栏上进行的。 有人可以提供摘要吗? 更新: 自从我最初提出问题以来,已经为这个问题提供了很多很棒的建议。 请务必通读所有答案,以找出最适合您的方法。 更新(2015年4月30日): 使用iOS 7.0,我现在可以执行以下操作,这将满足我原来的问题。 但是,如果您遇到的情况更复杂,请查看所有答案。 UIImage *iconImage = [[UIImage imageNamed:@"myImageName"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; UIImageView *icon = [[UIImageView alloc] initWithImage:iconImage]; icon.tintColor = [UIColor redColor]; 回答1 更新:这是使用以下代码的Swift UIColor扩展的要点。 如果您有灰度图像,并且希望白色成为着色颜色,则可以使用kCGBlendModeMultiply 。 使用这种方法,您不能使突出显示的颜色比着色的颜色浅。 相反,如果你有任何非灰度图像
  • 更改导航栏中的“后退”按钮的颜色(Change color of Back button in navigation bar)
    问题 我正在尝试将“设置”按钮的颜色更改为白色,但无法更改。 我已经尝试过这两种方法: navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor() navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor() 但没有任何变化,它仍然看起来像这样: 如何使该按钮变白? 回答1 您可以通过单击演示板上的空白区域并在右侧的工具栏“显示文件检查器”中选择,来更改情节提要中的全局色颜色,然后您将在工具栏的底部看到“全局色”选项。 回答2 此代码更改箭头颜色 self.navigationController.navigationBar.tintColor = UIColor.whiteColor(); 如果这不起作用,请使用下面的代码: self.navigationBar.barStyle = UIBarStyle.Black self.navigationBar.tintColor = UIColor.whiteColor() 斯威夫特3笔记 UIColor.whiteColor()等已简化为UIColor.white 另外,许多以前的隐式可选选项已更改为显式,因此您可能需要: self.navigationController
  • 更改UIBarButtonItem的色调颜色(Changing the Tint Color of UIBarButtonItem)
    问题 我有一个使用情节提要的项目,每当我按顺序推动视图控制器时,动态创建的条形按钮项始终为蓝色。 它让我发疯。 由于此对象是动态创建的,因此无法在IB中设置其颜色(就像我以前使用的条形按钮项目一样)。 我尝试过的解决方案包括: 在接收者的viewDidLoad 在接收者的viewDidAppear设置它self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor]; 当我看到这不太起作用时,我尝试改为设置leftBarButtonItem: self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor]; 在调用新视图时以及在推送新视图之前,我已经在我的应用程序的委托中尝试了以下代码(从其他SO答案中获得)。 [[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]]; 我找到的所有Google答案都建议使用上面的代码,但对我来说根本不起作用。 也许iOS 7的外观API有一些更改? 无论如何或在任何地方尝试将“类别”设置为白色,它始终是默认的蓝色。 回答1 在iOS 7中,要设置应用程序中所有barButtonItem的颜色
  • How can I change image tintColor in iOS and WatchKit
    I have an UIImageView called "theImageView", with UIImage in a single color (transparent background) just like the left black heart below. How can I change the tint color of this image programmatically in iOS 7 or above, as per the tint method used in the iOS 7+ Navigation Bar icons? Can this method also work in WatchKit for an Apple Watch app?
  • 向 UIToolBar/UINavigationBar/UITabBar 添加图层蒙版会破坏半透明(adding a layer mask to UIToolBar/UINavigationBar/UITabBar breaks translucency)
    问题 我将我的 UI 升级到 iOS 7,并且一直在使用一个自定义标签栏,它有一个 CAShapeLayer 用作掩码。 我一直在尝试通过在下面放置一个 UIToolBar 来添加动态模糊,但是如果我尝试在工具栏上设置 layer.mask 属性,半透明消失了,我只是让它半透明(但当然可以使用遮罩)。 有没有办法让这个工作? 在向这些类添加子视图时,我也看到了这种行为。 回答1 如果“半透明消失”意味着它变得完全透明,如果你只是在模拟器上测试,这是模拟器的一个已知错误。 如果您在设备上运行它,它应该会按预期工作。 回答2 我遇到了同样的问题。 我的解决方案并不理想,但它适用于所有不需要动态背景的情况。 在阅读以下评论后,如何产生类似于 iOS 7 模糊视图的效果?。 我意识到试图找到一种改变工具栏的方法会让我无处可去。 所以让我们使用图像! 在 Apples Developer Downloads 站点中,您可以搜索ImageEffects并找到我们将要使用的代码。 它带有您熟悉的 iOS 8 模糊效果, Light 、 ExtraLight和Dark 。 这是底部带有我们自己的类扩展名的 .h 文件,使事情变得更容易一些。 /* File: UIImage+ImageEffects.h Abstract: This is a category of UIImage that
  • 为什么我的UIButton.tintColor不起作用?(Why is my UIButton.tintColor not working?)
    问题 我的构建目标是为IOS5设置的,这是我了解UIButton.tintColor引入的地方... 我的ViewDidLoad中有这个用于View Controller [timelineButton setTintColor:[UIColor blackColor]]; [timelineButton setTitle:@"test" forState:UIControlStateNormal]; 文本更改正确,但是按钮不是黑色的吗? 谢谢! 回答1 根据文档: 此属性对所有按钮类型均无效。 您需要将buttonType切换为其中的另一种。 (不幸的是,文档没有指定哪些特定的按钮类型支持此属性。) 回答2 确保您的按钮“类型”设置为“系统”。 如果将其设置为“自定义”,则可能是按钮颜色未更改的原因。 这就是我所经历的,将类型更改为系统修复了它。 回答3 它会为您突出显示的州颜色着色。 当您单击/单击UIButton时,只要按住UIButton,就会显示用tintColor指定的颜色。 resetButton.tintColor = [UIColor colorWithRed:0.764 green:1.000 blue:0.000 alpha:1.000]; 在正常状态下,该按钮为白色。 但是,如果我点击按钮,颜色会变成红色,但只有那时。 如果需要更改按钮
  • iOS开发
    获取iPhone中登陆过的WiFi密码 1.在iPhone中登陆iCloud ,钥匙串选择使用iCloud 2.在同一AppleID账号登陆的Mac上去钥匙串中查看对应的WiFi密码 3.查看密码需要输入电脑账号密码。 Architechtures armv6, armv7, armv7s, arm64指的是arm处理器的指令集。(真机) i386, x86_64指的是pc端处理器指令集。(模拟器) xcode中,指令集相关的选项主要有三种: 1,Architectures:该选项指定工程可被编译成支持何种指令集的数据包。由于工程会针对每一种指令集编译出对应的二进制数据包,所以支持的指令集越多,对应生成的ipa包就越大。 2,Valid Architectures:限制了工程可支持的指令集范围。即,工程最终支持的指令集在valid architectures定义的这个范围之内,所以工程最终编译出的包支持的指令集将由Architetures和Valid Architectures选项定义的指令集的交集决定。 3,Build Active Architecture Only:设定是否只编译出当前连接设备所支持的指令集。一般,debug的时候可指定为YES,为了debug的时候编译速度快;release的时候指定为NO,以适应不同的设备。 CocoaPods pod update 太慢
  • 使用iOS 7的快照API的模糊屏幕(Blur screen with iOS 7's snapshot API)
    问题 我相信NDA下降了,因此我可以提出这个问题。 我有一个UIView子类: BlurView *blurredView = ((BlurView *)[self.view snapshotViewAfterScreenUpdates:NO]); blurredView.frame = self.view.frame; [self.view addSubview:blurredView]; 到目前为止,它已经完成了捕获屏幕的工作,但是现在我想模糊该视图。 我到底该怎么做? 从我阅读的内容中,我需要捕获视图的当前内容(上下文?!)并将其转换为CIImage(否?),然后对其应用CIGaussianBlur并将其重新绘制在视图上。 我到底该怎么做? PS该视图未设置动画,因此应该是明智的选择。 编辑:这是我到目前为止。 问题是我无法将快照捕获到UIImage,但出现黑屏。 但是,如果直接将视图添加为子视图,则可以看到快照。 // Snapshot UIView *view = [self.view snapshotViewAfterScreenUpdates:NO]; // Convert to UIImage UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0); [view.layer
  • UISegmentedControl选定的段颜色(UISegmentedControl selected segment color)
    问题 有什么办法可以在UISegmentedControl自定义选定细分的颜色? 我找到了segmentedController.tintColor属性,该属性使我可以自定义整个分段控件的颜色。 问题是,当我为tintColor属性选择明亮的颜色tintColor ,选定的段几乎变得无法识别(其颜色与分段控件的其余部分几乎相同,因此很难区分选定的段和未选定的段)。 因此,我不能使用任何良好的鲜艳颜色进行分段控制。 解决方案是为选定的细分颜色提供一些单独的属性,但我找不到它。 有人解决了吗? 回答1 我在UISegmentcontrol中找到了一种为所选段添加颜色的简单方法 发件人是UISegmentControl for (int i=0; i<[sender.subviews count]; i++) { if ([[sender.subviews objectAtIndex:i]isSelected] ) { UIColor *tintcolor=[UIColor colorWithRed:127.0/255.0 green:161.0/255.0 blue:183.0/255.0 alpha:1.0]; [[sender.subviews objectAtIndex:i] setTintColor:tintcolor]; } else { [[sender.subviews
  • iOS 8:通过 UIAppearance 设置背景色 UITableView(iOS 8: setting background color UITableView via UIAppearance)
    问题 我习惯于执行以下操作来设置UITableView所有实例的样式: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UITableView appearance] setBackgroundColor:[UIColor blueColor]]; return YES; } 但是在 ios 8 上这不再起作用了。 出于测试和演示的目的,我使用 xcode 6.0.1 创建了一个新的主从项目,您可以在 github 上找到它。 在 ios 7 上运行它可以工作(表视图获得蓝色背景)。 在 ios 8 上没有那么多。 我在炒作期间错过了什么吗? 这是一个错误吗? 更新 2014-09-25 这似乎是一个已知的错误。 苹果雷达 # 是 17974434,目前标记为open 。 回答1 有同样的问题,向 Apple 报告了另一个错误(rdar://18537175):http://openradar.appspot.com/18537175 回答2 这个对我有用: [[UITableView appearance] setBackgroundColor:[UIColor clearColor]]; [
  • 更新Apple Watch并发症数据的流程是什么?(What is the flow for updating complication data for Apple Watch?)
    问题 我一直在互联网上关注许多教程,以学习如何设置并发症。 我可以按预期设置并发症。 直到初始时间轴条目到期。 12小时后,我不知道如何对其进行更新以使并发症持续存在。 我将分享我下面的所有内容,希望有人可以帮助我填写。 在这里,我为要在复杂情况下显示的数据创建了变量。 struct data = { var name: String var startString: String var startDate: NSDate } 以下数组是此数据的容器。 var dataArray = [data] 这样可以在手表锁定时显示复杂情况。 func getPrivacyBehaviorForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationPrivacyBehavior) -> Void) { handler(.ShowOnLockScreen) } 这样就可以在复杂情况下进行时间旅行。 func getSupportedTimeTravelDirectionsForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTimeTravelDirections) ->
  • 在WatchKit中有Apple Watch的ActivityIndi​​cator吗?(Is there an ActivityIndicator in WatchKit for Apple Watch?)
    问题 Apple Watch的WatchKit中是否有ActivityIndi​​cator(或类似的东西)? 你们都如何向用户提供有关一些持续时间更长的后台活动的反馈? 回答1 编辑:此答案最初是在具有蜂窝和wifi连接功能的Apple Watch型号推出之前发布的,因此可能不再适用于该设备的新型号(考虑到显着的性能改进)。 Apple Developer论坛上的该主题有Apple工程师的权威性答案,说明为什么不应该使用Apple Watch执行网络操作。 不从手表应用程序/扩展程序执行网络操作的主要原因有两个: 用户仅在短时间内与手表互动。 请参阅这一方面的人机界面指南。 如果您在数分钟内即可测量与iOS应用程序的互动,则可以预计与秒表之间的互动将以秒计。 因此,交互应简短,界面应简单。 如果网络请求未完成,则系统可能会死锁。 我们的建议是,通常,您不应在WatchKit Extension中执行复杂的联网操作... [Apple建议开发人员]有一个过程来负责更新数据库(可能是iOS应用)中的信息,然后您的扩展程序将(基本上)对这个[缓存的]数据库具有只读访问权限... 。 话虽如此。 如果您确实需要一个UIActivityIndi​​cator rdar:// 19363748(我认为这个还没有被公开),那么开发人员已经提出了获得官方支持的请求。
  • iPad SplitView 更改主导航栏颜色(iPad SplitView changes main navigation bar color)
    问题 奇怪的问题:在将我的应用程序旋转为纵向后,选择工具栏项并暴露 uipopovercontroller,如果我旋转回横向,则右侧的 UINavigationController(SplitView 的 objectAtIndex:0)会更改导航栏的颜色。 我不知道为什么。 我在 Interface Builder 中将它设置为 barStyle = UIBarStyleBlackOpaque; 返回横向模式后变为银色。 这只发生在我将其旋转为纵向、创建弹出框并在导航控制器中选择某些内容时,这会推送另一个 tableViewController。 即使在 viewDidLoad 方法中设置属性也没有任何作用。 有人有想法吗? 回答1 viewDidLoad 只会在您的视图第一次显示时被调用(或者由于内存问题而被清除)。 尝试重新设置 viewWillAppear 中的 barStyle,甚至 – splitViewController:willShowViewController:invalidatingBarButtonItem:。 回答2 for Steve (检测 RootViewControll 的 PoPView 或 splitView 导航栏) [splitview IPAD] Yuo 必须在从 detailviewcontroller 调用的
  • 更改UITextField和UITextView光标/插入符号的颜色(Change UITextField and UITextView Cursor / Caret Color)
    问题 我想知道如何在iOS中更改UITextField中的光标/插入符号的颜色(如果答案相同,则返回UITextView的颜色)。 我已经看到了OSX开发的答案,但iOS却没有。 这有可能吗? 回答1 如果您的目标是iOS 7以上版本,则此操作将变得更加容易。 只需使用外观代理使用光标更改字段的tintColor ,它将应用于整个应用程序: Swift 3.0: UITextField.appearance().tintColor = .black 目标C: [[UITextField appearance] setTintColor:[UIColor blackColor]]; 相同的答案适用于单个UITextField : Swift 3.0: myTextField.tintColor = .black 物镜 [myTextField setTintColor:[UIColor blackColor]]; 回答2 使用iOS7,您只需更改textField的tintColor 回答3 斯威夫特3: UITextField.appearance().tintColor = UIColor.black UITextView.appearance().tintColor = UIColor.black 回答4 yourTextField.tintColor = [UIColor