在 iOS 的 UIImageView 后面添加 CAGradient 层

Posted

技术标签:

【中文标题】在 iOS 的 UIImageView 后面添加 CAGradient 层【英文标题】:Add CAGradient Layer behind UIImageView iOS 【发布时间】:2013-01-30 01:13:50 【问题描述】:

我正在尝试在透明图像后面添加渐变。我在地图 leftCallOutAccessoryView 上执行此操作,但是无论我尝试什么,渐变层始终显示在 imageView 上方并希望它出现在其后面

这是我的 MKAnnotationView 代码,它是一个名为 pinView 的 ivar

pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

UIImageView *profileIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Profile.png"]];
pinView.leftCalloutAccessoryView = profileIconView;

CAGradientLayer *backgroundLayer = [CAGradientLayer layer];
backgroundLayer.frame = CGRectMake(0, 0, 30, 30);
backgroundLayer.cornerRadius = 2;
backgroundLayer.borderWidth = 1;
backgroundLayer.borderColor = [UIColor whiteColor].CGColor;
backgroundLayer.colors = [NSArray arrayWithObjects:(id)[[sharedManager cellGradientEnd] CGColor], (id)[[sharedManager cellGradientStart] CGColor], nil];
[profileIconView.layer insertSublayer:backgroundLayer atIndex:0];

【问题讨论】:

【参考方案1】:

我设法用下面的方法弄清楚了,简而言之,我创建了一个空视图,然后将 imageView 作为子视图添加到视图中,现在一切都很好!:

UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 30, 30)];
UIImageView *profileIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Profile.png"]];
pinView.leftCalloutAccessoryView = view;

CAGradientLayer *backgroundLayer = [CAGradientLayer layer];
backgroundLayer.frame = view.bounds;
backgroundLayer.cornerRadius = 2;
backgroundLayer.borderWidth = 1;
backgroundLayer.borderColor = [UIColor whiteColor].CGColor;
backgroundLayer.colors = [NSArray arrayWithObjects:(id)[[sharedManager cellGradientEnd] CGColor], (id)[[sharedManager cellGradientStart] CGColor], nil];
[pinView.leftCalloutAccessoryView.layer insertSublayer:backgroundLayer atIndex:0];
[view addSubview:profileIconView];

【讨论】:

以上是关于在 iOS 的 UIImageView 后面添加 CAGradient 层的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中使用 UIImageview 添加 UIScrollview 的页面控件

如何在ios目标c的UIImageView中添加UIView

Objective C,iOS,都有哪些选项可以在 UIImageView 中的图像顶部添加一些文本?

iOS - 如何在 UIImageView 上添加显示字符串

iOS UIImageView如何为圆形ImageView添加填充

怎么给uiimageview添加两次点击事件ios