代码之家  ›  专栏  ›  技术社区  ›  microspino

colorWithPatternImage和setCornerRadius问题

  •  2
  • microspino  · 技术社区  · 14 年前

    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 触发视图 是一个 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];
    

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

    3 回复  |  直到 13 年前
        1
  •  1
  •   Ben    14 年前

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

    triggerView.layer.contents = (id) [[UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE] CGImage];
    

    您可能必须允许或保留UIImage以防止它被自动释放。。。

        2
  •  4
  •   Shog9    13 年前

    好吧,谢谢本的评论和这个 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; 光靠一个人是不够的。

        3
  •  1
  •   pablasso Jordan    13 年前

    使用iOS SDK 4.0和4.1, colorWithPatternImage 方法有一个错误,显示的图像不好。。。
    我用这个方法,我有这个错误,但我可以用另一个方法解决。。。
    initWithPatternImage 方法 UIColor 班级:

    UIColor *imageBg = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:OPERATOR_VIEW_BACKGROUND_IMAGE]];
    

    这对我很有用。。。

    不幸的是我从没用过 cornerRadius 方法,我不知道其他问题的可能解决方案。