如何使uiimageview圆圈。?

Posted

技术标签:

【中文标题】如何使uiimageview圆圈。?【英文标题】:How to make uiimageview circle.? 【发布时间】:2016-04-25 05:07:23 【问题描述】:

我需要在圆半径内制作 UIImageView,我正在使用这个代码块来完成这个任务。

-(void)viewWillAppear:(BOOL)animated 

    [self performSelector:@selector(setStyleCircleForImage:) withObject:_imageview afterDelay:0];

    [super viewWillAppear:YES];


-(void) setStyleCircleForImage:(UIImageView *)imgView 

    imgView.layer.cornerRadius = _imageview.frame.size.height / 2.0;
    imgView.clipsToBounds = YES;

它在 ios 5 中运行完美,但在其他设备上测试时,它的形状发生了变化,我不知道为什么会发生这种情况。请帮忙。

【问题讨论】:

两个规则 1.组件的宽度和高度应该相同。 2.在你的情况下,框架可能没有更新,尝试输入viewWillLayoutSubviews它应该可以工作。 好的先生,我尝试实现它 imgView.layer.cornerRadius = imgView.frame.size.width / 2.0;试试这个 @iphonic 如果我使 uiimageview 的宽度和高度相同,但在其他设备上却不同 你的代码有问题 【参考方案1】:

这样的功能最好用蒙版画圆

  - (void)viewDidLoad 
    [super viewDidLoad];
    [self makeCircleImage: _imageview];
 

  -(void)makeCircleImage:(UIImageView *)img
      CGFloat img_width = img.bounds.size.width;
      UIGraphicsBeginImageContextWithOptions(CGSizeMake(img_width,img_width), NO, 0);
      CGContextRef c = UIGraphicsGetCurrentContext();
      CGContextSetFillColorWithColor(c, [UIColor blackColor].CGColor);
      CGContextFillEllipseInRect(c, CGRectMake(0,0,img_width,img_width));
      UIImage* maskim = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();

      CALayer* mask = [CALayer new];
      mask.frame = CGRectMake(0,0,img_width,img_width);
      mask.contents = (id)maskim.CGImage;

      img.layer.mask = mask;
  

【讨论】:

我将如何关联我的图像名称这种方法? 是的,先生,它在 iPhone 6s 上工作,让我检查一些其他设备。【参考方案2】:

试试这个

 yourImageView.layer.cornerRadius = yourImageView.frame.size.width/2;
 yourImageView.layer.masksToBounds = YES;

【讨论】:

是的。您必须添加 viewDidLoad。你为什么使用选择器? @sandeeptomar 你必须使用masksToBounds insted of clipsToBounds 好的,先生,您的代码中的 _imgFriendsPhoto 是什么。会按图片名称吗? @sandeeptomar 你试过了吗? 是的,先生,但它创造了同样的东西,每当我在 iPhone 5 上测试它工作但如果我测试一些其他设备,它不会出现圆圈【参考方案3】:

先给equal widthequal height换成UIImageView,然后使用

imgView.layer.cornerRadius = imgView.frame.size.height / 2.0;

imgView.layer.masksToBounds = YES;

【讨论】:

我通过EI队长的回答解决了我的问题。谢谢楼主支持

以上是关于如何使uiimageview圆圈。?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Swift中为UIImages创建一个闪烁的指针效果

如何使 CAShape 层适合 UIImage 视图?

使 UIImageView 及其 UIImage 按比例缩放而无需额外的填充

在 UIImageView 的图像上方绘制贝塞尔曲线

如何使 UIImageView 成为按钮?

将 UIImages 高度缩放到 UIImageView 高度