【问题标题】:How to change the UILabel text color according to the background image color? [closed]如何根据背景图片颜色改变UILabel文本颜色? [关闭]
【发布时间】:2013-11-29 21:29:44
【问题描述】:

我想根据背景图片颜色改变标签文字颜色。背景图像位于UIScrollView 上,UILabel 位于其之上。滚动视图滚动时,标签颜色应根据背景图像颜色进行更改。

基本上,如果标签位于图像的黄色部分,则为黑色,如果位于图像的蓝色部分,则为白色。

见下图:

在此先感谢...

【问题讨论】:

  • 如果你这样做了,你会不会失去阅读标签的能力?
  • 你需要明确你想要什么。从您的帖子看来,您希望文本颜色与背景颜色相同,这会使它消失。我假设这不是你想要的。
  • 也许你应该澄清一下。这个问题可以理解为:如何使文本颜色与背景颜色相同,在最好的情况下会使文本不可见!如果这就是您所追求的,那么只需首先隐藏标签,或者按照以下答案之一的建议采取迂回的方式。但是,如果您的问题是关于选择文本颜色以便可以在不同背景下舒适地阅读文本,那么这是一个完全不同的问题。研究色彩空间,并找到与背景“相反”的颜色。维基百科是你的朋友:)
  • 如果你这样做,那么我认为你的标签不可见
  • 希望我的编辑有助于使问题更清晰

标签: ios iphone objective-c uiimageview uilabel


【解决方案1】:

首先创建一个UIView 假设它是hiddenView,其大小与您的scorllviewcontentsize 相同,并从您设置image 的背景颜色,您设置您的scrollview 的背景但是您不需要将此视图添加到任何位置。

实现scrollViewDidScroll方法

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 
 {
     CGRect visibleRect;
     visibleRect.origin = scrollView.contentOffset;
     visibleRect.size = scrollView.bounds.size;

     float theScale = 1.0 / scale;
     visibleRect.origin.x *= theScale;
     visibleRect.origin.y *= theScale;
     visibleRect.size.width *= theScale;
     visibleRect.size.height *= theScale;

     CGImageRef imageRef = CGImageCreateWithImageInRect((CGImageRef)hiddenView.layer.contents, visibleRect);
     UIImage *BackImage = [UIImage imageWithCGImage:imageRef];
     [YourLabel setTextColor:[UIColor colorWithPatternImage:BackImage];
 }

试试这个,希望它能满足你的要求。

【讨论】:

  • 这应该是正确的答案。更新到 Swift 3 下面:var visibleRect = CGRect() visibleRect.origin = scrollView.contentOffset visibleRect.size = scrollView.bounds.size let scale: CGFloat = 1.0 / UIScreen.main.scale visibleRect.origin.x *= scale visibleRect.origin.y *= scale visibleRect.size.width *= scale visibleRect.size.height *= scale let renderer = UIGraphicsImageRenderer(size: contentView.bounds.size) let image = renderer.image { _ in view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) } label.textColor = UIColor(patternImage: image)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 2016-06-02
  • 2019-09-10
  • 2022-10-18
  • 1970-01-01
  • 2021-11-07
  • 2020-04-04
相关资源
最近更新 更多