Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Circular UIImageView in UITableView without performance hit?

I have a UIImageView on each of my UITableView cells, that display a remote image (using SDWebImage). I've done some QuartzCore layer styling to the image view, as such:

UIImageView *itemImageView = (UIImageView *)[cell viewWithTag:100];     itemImageView.layer.borderWidth = 1.0f;     itemImageView.layer.borderColor = [UIColor concreteColor].CGColor;     itemImageView.layer.masksToBounds = NO;     itemImageView.clipsToBounds = YES; 

So now I have a 50x50 square with a faint grey border, but I'd like to make it circular instead of squared. The app Hemoglobe uses circular images in table views, and that's the effect I'd like to achieve. However, I don't want to use cornerRadius, as that degrades my scrolling FPS.

Here's Hemoglobe showing circular UIImageViews:

enter image description here

Is there any way to get this effect? Thanks.

like image 415
swiftcode Avatar asked Jul 18 '13 11:07

swiftcode


People also ask

What is the difference between a UIImage and a UIImageView?

UIImage contains the data for an image. UIImageView is a custom view meant to display the UIImage .

What is use of UIImageView?

Overview. Image views let you efficiently draw any image that can be specified using a UIImage object. For example, you can use the UIImageView class to display the contents of many standard image files, such as JPEG and PNG files.

How do I install UIImageView?

First you create a UIImage from your image file, then create a UIImageView from that: let imageName = "yourImage. png" let image = UIImage(named: imageName) let imageView = UIImageView(image: image!)

What is UIImage Swift?

An object that manages image data in your app.


2 Answers

Simply set the cornerRadius to half of the width or height (assuming your object's view is square).

For example, if your object's view's width and height are both 50:

itemImageView.layer.cornerRadius = 25; 

Update - As user atulkhatri points out, it won't work if you don't add:

itemImageView.layer.masksToBounds = YES; 
like image 198
tagabek Avatar answered Sep 28 '22 11:09

tagabek


To Add border

self.ImageView.layer.borderWidth = 3.0f;  self.ImageView.layer.borderColor = [UIColor whiteColor].CGColor; 

For Circular Shape

self.ImageView.layer.cornerRadius = self.ImageView.frame.size.width / 2; self.ImageView.clipsToBounds = YES; 

Refer this link

http://www.appcoda.com/ios-programming-circular-image-calayer/

like image 29
yazh Avatar answered Sep 28 '22 09:09

yazh