gpt4 book ai didi

IOS:UIImageView 设置边框白色半径和阴影

转载 作者:可可西里 更新时间:2023-11-01 05:26:47 35 4
gpt4 key购买 nike

这是我设置边框、阴影和角的代码

// set border
[self.avatarImageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[self.avatarImageView.layer setBorderWidth: 2.0];

// set shadow
[self.avatarImageView.layer setShadowOffset:CGSizeZero];
[self.avatarImageView.layer setShadowOpacity:1.0];
self.avatarImageView.clipsToBounds = NO;

// set corner
self.avatarImageView.layer.cornerRadius = 10.0;
self.avatarImageView.layer.masksToBounds = YES;

如果我只使用 set borderset corner 的代码,它会像这样工作得很好

enter image description here

但是如果我添加代码set corner,我会得到这样的结果(边界和角半径有效,但阴影消失了)

enter image description here

然而,如果它单独存在,设置角的代码就可以完美工作。请指导我该怎么做。任何帮助将不胜感激

更新
按照@ozgur 回答。在我的代码中添加 2 行,它会提供非常漂亮的 View ,但阴影会小一些

self.avatarImageView.layer.shouldRasterize = YES;
self.avatarImageView.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:self.avatarImageView.bounds cornerRadius:10].CGPath;

enter image description here

最佳答案

圆角需要将 masksToBounds 设置为 YES。因此,无法显示超出边界的任何内容(如阴影),因为它将被遮盖/剪掉。如果您禁用 masksToBounds 以便它显示,那么圆角将不起作用,因为它们无法将您的图像 mask /剪辑成圆形,因为您禁用了 masksToBounds。

因此,您不能在一个 View 上同时执行这两项操作,因此您需要两个 View 。

您需要使 UIView 的尺寸与 UIImageView 相同,并使 UIImageView 成为 UIView 的 subview 。

然后在您的 UIImageView 上将 masksToBounds 设置为 YES,并在其 super View (具有相同尺寸的 UIView)上将 masksToBounds 设置为 NO 并相应地添加属性。


将您的代码更改为:(不使用 xCode 全部键入,所以我可能有拼写错误)

UIView *avatarImageViewHolder = [[UIView alloc] initWithFrame:self.avatarImageView.frame];
avatarImageViewHolder.backgroundColor = [UIColor clearColor];
[avatarImageView.superview addSubview:avatarImageViewHolder];
avatarImageViewHolder.center = avatarImageView.center;
[avatarImageViewHolder addSubview:avatarImageView];
avatarImageView.center = CGPointMake(avatarImageViewHolder.frame.size.width/2.0f, avatarImageViewHolder.frame.size.height/2.0f);


self.avatarImageView.layer.masksToBounds = YES;
avatarImageViewHolder.layer.masksToBounds = NO;


// set avatar image corner
self.avatarImageView.layer.cornerRadius = 10.0;

// set avatar image border
[self.avatarImageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[self.avatarImageView.layer setBorderWidth: 2.0];

// set holder shadow
[avatarImageViewHolder.layer setShadowOffset:CGSizeZero];
[avatarImageViewHolder.layer setShadowOpacity:1.0];
avatarImageViewHolder.clipsToBounds = NO;

关于IOS:UIImageView 设置边框白色半径和阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36192690/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com