Iphone 使用cornerradius IOS使其圆化时出现问题相关UIimageView
我在XIB文件中查看了UIView。在这个视图中有一个UIImageView和一个相同大小的按钮。我想让那个视图是圆形的,为此我使用了cornerRadius。视图的大小是92*92,这就是为什么我选择拐角半径为46的原因。下面是我的代码,我在评论代码本身的问题Iphone 使用cornerradius IOS使其圆化时出现问题相关UIimageView,iphone,ios,cornerradius,Iphone,Ios,Cornerradius,我在XIB文件中查看了UIView。在这个视图中有一个UIImageView和一个相同大小的按钮。我想让那个视图是圆形的,为此我使用了cornerRadius。视图的大小是92*92,这就是为什么我选择拐角半径为46的原因。下面是我的代码,我在评论代码本身的问题 - (void)viewDidLoad { [super viewDidLoad]; _roundView.layer.cornerRadius = 46; flag=0; selectImage.
- (void)viewDidLoad
{
[super viewDidLoad];
_roundView.layer.cornerRadius = 46;
flag=0;
selectImage.layer.cornerRadius = 46;
NSLog(@"%f",_roundView.frame.size.height);
NSLog(@"%f",_roundView.frame.size.width);
imageFrame = selectImage.frame;
// when first view appear its perfectly round
// this is how i pick image from gallery
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info {
self.lastChosenMediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([lastChosenMediaType isEqual:(NSString *)kUTTypeImage]) {
UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];
UIImage *shrunkenImage = shrinkImage(chosenImage, imageFrame.size);
self.imagee = shrunkenImage;
NSLog(@"%f",_roundView.frame.size.height); nslog = 92
NSLog(@"%f",_roundView.frame.size.width); nslog = 92
NSLog(@"%f",_roundView.layer.cornerRadius); nslog = 46
NSLog(@"%f",selectImage.frame.size.height); nslog = 92
NSLog(@"%f",selectImage.frame.size.width); nslog = 92
NSLog(@"%f",selectImage.layer.cornerRadius); nslog = 46
selectImage.image = imagee;
selectImage.layer.cornerRadius = 46;
// now the issue is Image gets selected but it become rectangular 92 * 92
}
[picker dismissModalViewControllerAnimated:YES];
}
试着用这个
_roundView.layer.masksToBounds = YES;
请尝试以下代码:
_roundView.layer.cornerRadius = _roundView.frame.size.height / 2;
_roundView.layer.masksToBounds = YES;
必须绑定掩码。。
此外,如果使用公式而不是直接值,代码将变得更加灵活。
我希望它能帮助你!!祝你好运 试试下面的代码
roundView.layer.cornerRadius = 46;
_roundView.layer.masksToBounds = YES;
flag=0;
selectImage.layer.cornerRadius = 46;
selectImage.layer.masksToBounds = YES;
imageFrame = selectImage.frame;