【问题标题】:Add Round Corner to UIImageVIew and Display Shadow effect为 UIImageVIew 添加圆角并显示阴影效果
【发布时间】:2023-03-23 13:48:01
【问题描述】:

我和这里的链接有同样的问题: Can't add a corner radius and a shadow

如果我设置 maskToBounds = YES,我得到圆角,但没有阴影 如果我设置 maskToBounds = NO,我会得到阴影,但没有圆角。

然后我按照上面链接中的说明设置 maskToBounds = NO,“而是设置角半径并使用圆角矩形设置阴影的贝塞尔路径。保持两者的半径相同”。但是,我没有得到圆角,也没有得到任何阴影! (即没有阴影的方形图像)你能帮我解决这个问题吗?我不知道我做错了什么。提前致谢。

self.userImageView.backgroundColor = [UIColor redColor]; 
self.userImageView.clipsToBounds = NO; 
self.userImageView.contentMode = UIViewContentModeCenter; 
self.userImageView.layer.masksToBounds = NO; 

self.userImageView.layer.borderWidth = 1; 
self.userImageView.layer.borderColor = [[UIColor grayColor] CGColor]; 

self.userImageView.layer.shadowOpacity = 1; 
self.userImageView.layer.shadowColor = [[UIColor blackColor] CGColor]; 
self.userImageView.layer.shadowRadius = 8.0f; 
self.userImageView.layer.shadowOffset = CGSizeMake(-3, 0);
self.userImageView.layer.shouldRasterize = YES; 

self.userImageView.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:[self.userImageView bounds] cornerRadius:10.0f] CGPath]; 

[self addSubview:self.userImageView]; 

【问题讨论】:

    标签: uiimageview calayer shadow


    【解决方案1】:

    很遗憾,我认为 UIImageView 不能同时支持圆角和阴影。

    但是,您可以在 UIImageView 的超级视图中制作阴影。

    CGFloat cornerRadius = 3.0
    
    UIView *container = [[UIView alloc] initWithFrame:aRect];
    container.layer.shadowOffset = CGSizeMake(0, 0);
    container.layer.shadowOpacity = 0.8;
    container.layer.shadowRadius = 5.0;
    container.layer.shadowColor = [UIColor redColor].CGColor;
    container.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:container.bounds cornerRadius:cornerRadius] CGPath];
    
    self.userImageView.layer.cornerRadius = cornerRadius;
    self.userImageView.layer.masksToBounds = YES;
    self.userImageView.frame = container.bounds;
    [container addSubview:self.userImageView];
    [self addSubview:container];
    

    【讨论】:

    • 我认为你的方法会奏效,我会尽快尝试。感谢您的回答。很久没有发这个问题了,很高兴看到答案。
    • aRect 是您希望 imageView 所在的位置(即没有容器时 imageView 的框架。)
    • 阴影半径是模糊,而不是阴影上的角半径。
    猜你喜欢
    • 2017-05-19
    • 2016-09-06
    • 1970-01-01
    • 2013-08-26
    • 2015-01-09
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多