大家好,我想同时实现圆角和背景拼贴组成的一点png (OPERATOR_VIEW_BACKGROUND_IMAGE
)。我的主要目标是允许设计师通过在项目资源中插入正确的图像来填充视图的背景。
[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
有关的东西。
编辑:我也尝试过这段代码,在我的视图的图层背景上工作:
[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];
现在我得到了一个透明的背景,但角是圆的;
发布于 2010-10-09 00:38:10
尝试使用图像的CGImageRef设置图层的content属性:
triggerView.layer.contents = (id) [[UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE] CGImage];
您可能需要分配或保留UIImage,以防止它被自动释放...
发布于 2010-10-09 04:34:51
好的,多亏了本的评论和这个Blog entry,我找到了这个解决方案:
[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;
是不够的。
发布于 2010-10-09 00:56:13
在iOS SDK4.0和4.1中,colorWithPatternImage
方法有一个错误,会显示糟糕的图像...
我使用这个方法,我有这个bug,但我可以用另一个方法来解决……
尝试使用UIColor
类的initWithPatternImage
方法:
UIColor *imageBg = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE]];
这对我很有用……
不幸的是,我从来没有使用过cornerRadius
方法,我也不知道另一个问题的可能解决方案。
https://stackoverflow.com/questions/3892500
复制相似问题