首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >colorWithPatternImage和setCornerRadius问题

colorWithPatternImage和setCornerRadius问题
EN

Stack Overflow用户
提问于 2010-10-09 00:29:27
回答 3查看 1.6K关注 0票数 2

大家好,我想同时实现圆角和背景拼贴组成的一点png (OPERATOR_VIEW_BACKGROUND_IMAGE)。我的主要目标是允许设计师通过在项目资源中插入正确的图像来填充视图的背景。

代码语言:javascript
代码运行次数:0
运行
复制
[triggerView setFrame:CGRectMake(0, 0, ICONS_WIDTH, iconFrameHeight)];
[triggerView.layer setCornerRadius:borderRadius];
[triggerView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE]]];;

我不知道为什么,当我添加最后一行时,triggerView放松了CornerRadius设置。triggerView是一个使用接口构建器构建的UIView,并使用上面的代码在其superView viewDidLoad中以编程方式进行修改。

我哪里错了?

编辑:我没有提到,如果我使用一个简单的UIColor,比如:[UIColor orangeColor],它会工作得很好。所以这是和patternImage有关的东西。

编辑:我也尝试过这段代码,在我的视图的图层背景上工作:

代码语言:javascript
代码运行次数:0
运行
复制
[triggerView setFrame:CGRectMake(0, 0, ICONS_WIDTH, iconFrameHeight)];
triggerView.backgroundColor = [UIColor clearColor];
UIImage *img = [UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE];
triggerView.layer.backgroundColor = [UIColor colorWithPatternImage:img].CGColor;
triggerView.layer.cornerRadius = radius;
[img release];
[self.view addSubview:triggerView];

现在我得到了一个透明的背景,但角是圆的;

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-09 00:38:10

尝试使用图像的CGImageRef设置图层的content属性:

代码语言:javascript
代码运行次数:0
运行
复制
triggerView.layer.contents = (id) [[UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE] CGImage];

您可能需要分配或保留UIImage,以防止它被自动释放...

票数 1
EN

Stack Overflow用户

发布于 2010-10-09 04:34:51

好的,多亏了本的评论和这个Blog entry,我找到了这个解决方案:

代码语言:javascript
代码运行次数:0
运行
复制
 [triggerView setFrame:CGRectMake(0, 0, ICONS_WIDTH, iconFrameHeight)];
 triggerView.layer.masksToBounds = YES;
 triggerView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE]];
 triggerView.layer.cornerRadius = radius;
 [self.view addSubview:triggerView];

似乎triggerView.layer.masksToBounds = YES;是缺失的一部分,但我仍然不明白仅有why triggerView.layer.cornerRadius = radius;是不够的。

票数 4
EN

Stack Overflow用户

发布于 2010-10-09 00:56:13

在iOS SDK4.0和4.1中,colorWithPatternImage方法有一个错误,会显示糟糕的图像...

我使用这个方法,我有这个bug,但我可以用另一个方法来解决……

尝试使用UIColor类的initWithPatternImage方法:

代码语言:javascript
代码运行次数:0
运行
复制
UIColor *imageBg = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE]];

这对我很有用……

不幸的是,我从来没有使用过cornerRadius方法,我也不知道另一个问题的可能解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3892500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档