Ios 如何根据背景图像颜色更改UILabel文本颜色?

Ios 如何根据背景图像颜色更改UILabel文本颜色?,ios,iphone,objective-c,uiimageview,uilabel,Ios,Iphone,Objective C,Uiimageview,Uilabel,我想根据背景图像颜色更改标签文本颜色。背景图像位于UIScrollView上,而UILabel位于其上方。滚动视图时,标签颜色应根据背景图像颜色进行更改 基本上,如果标签位于图像的黄色部分,它将是黑色的,如果标签位于图像的蓝色部分,它将是白色的 见下图: 提前感谢…首先创建一个ui视图,假设它是hiddenView,大小与scorlview的contentsize相同,并从图像设置滚动视图的背景色,但不需要将此视图添加到任何视图中在哪里 实现scrollViewDidScroll方法 - (

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

基本上,如果标签位于图像的黄色部分,它将是黑色的,如果标签位于图像的蓝色部分,它将是白色的

见下图:


提前感谢…

首先创建一个
ui视图
,假设它是
hiddenView
,大小与
scorlview
contentsize
相同,并从
图像
设置
滚动视图
的背景色,但不需要将此视图添加到任何视图中在哪里

实现
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*=缩放visibleRect.origin.y*=缩放visibleRect.size.width*=缩放visibleRect.size*=缩放let渲染器=UIGraphicsImageRenderer(大小:contentView.bounds.size)让image=renderer.image{inview.drawHierarchy(in:view.bounds,afterScreenUpdate:true)}label.textColor=UIColor(patternImage:image)