2010-12-10 33 views
20

Ai đó có thể giúp tôi ở đây ?. Mới với tư cách là nhà phát triển iPhone. Tôi đang cố hiển thị hình ảnh .png trong hình tròn thay vì hình chữ nhật là tiêu chuẩn cho iPhoneUIImage trong vòng kết nối

+0

http://stackoverflow.com/a/21329347/501487 – aToz

+0

http://stackoverflow.com/questions/7399343/making-a-uiimage-to-a-circle-form/21954535#21954535 –

Trả lời

9

Sử dụng UIImageView và đặt gócRadius là nửa chiều cao và chiều rộng. view.layer.cornerRadius = cornerRadius;

UIImage rounded corners

51

Vâng, tất cả các file png là 'hình chữ nhật' nhưng nếu bạn muốn có apperence của một vòng tròn hoặc hình chữ nhật đối tượng không khác trên màn hình, bạn có thể làm như vậy bằng cách sử dụng transparacy. Để đảm bảo các pixel trong suốt trong ảnh cũng trong suốt trên iPhone, bạn có thể đặt màu nền của UIImageView để xóa. Điều này có thể được thực hiện trong giao diện Builder bằng cách kéo thanh trượt Opacity trong bảng chọn màu nền tất cả các con đường xuống, hoặc trong mã như sau:

UIImage *image = [UIImage imageNamed:@"yourRoundImage.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
imageView.backgroundColor = [UIColor clearColor]; 
[self.view addSubview: imageView]; 

Nếu bạn chỉ muốn thêm góc tròn, để thực hiện một vòng tròn, bạn cũng có thể sử dụng tài sản cornerRadius như thế này nếu bạn đã thêm khuôn khổ QuartzCore để dự án của bạn:

#import <QuartzCore/QuartzCore.h> 
UIImage *image = [UIImage imageNamed:@"yourRoundImage.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
imageView.layer.cornerRadius = image.size.width/2; 
imageView.layer.masksToBounds = YES; 
[self.view addSubview: imageView]; 
+0

Một giải pháp hoạt động tốt! Tuy nhiên nếu bạn có nhiều hình ảnh – Vinzius

+5

Dòng cornerRadius phải là 'imageView.layer.cornerRadius = imageView.frame.size.width/2;' – guptron

+0

không hoạt động trong trường hợp ipad –

24

thử mã này

yourImageView.layer.cornerRadius = yourImageView.frame.size.height /2; 
yourImageView.layer.masksToBounds = YES; 
yourImageView.layer.borderWidth = 0; 

hình ảnh hiển thị này như hình ảnh vòng tròn ios 7 cảm ơn

+0

tôi đã thử nó hoạt động tốt nhờ @waseem – iOSDevp

+0

cảm ơn hình ảnh;) – animaonline

+0

hoàn hảo! Cảm ơn – malhal

2

Thay đổi gócĐộ cao của chế độ xem hình ảnh hoạt động tốt nếu bạn chỉ có một vài hình ảnh trong chế độ xem của mình. Tuy nhiên, nếu chế độ xem hình ảnh ở chế độ xem bảng sẽ bị ảnh hưởng.

Một số tùy chọn khác:

  1. Hãy vòng tròn phần tử hình ảnh trên máy chủ hoặc bằng tay nếu họ được đóng gói vào ứng dụng, với các bộ phận trong suốt đối với khu vực bên ngoài của vòng tròn.
  2. Nếu nền của chế độ xem hình ảnh không thay đổi, hãy tạo hình ảnh lớp phủ có phần vòng tròn trong suốt và phần còn lại giống như hình nền. Đồng thời đặt backgroundColor của chế độ xem hình ảnh thành clearColor.
  3. Khi nhận hình ảnh, hãy chỉnh sửa chúng trong mã thành một vòng tròn, trong chuỗi nền.
4

Hãy thử điều này để có được góc tròn của hình ảnh Xem và cũng để tô màu cho các góc:

self.imgView.layer.cornerRadius =self.imgView.frame.size.height/2; 
self.imgView.layer.masksToBounds = YES; 
self.imgView.layer.borderColor = [UIColor colorWithRed:148/255. green:79/255. blue:216/255. alpha:1.0].CGColor; 
self.imgView.layer.borderWidth=2; 

Điều kiện *: Chiều cao và chiều rộng của IMAGExem phải cùng để có được góc tròn.

12

đóng góp của tôi với một phần mở rộng nhanh chóng sử dụng để thiết lập một UIImageView như vòng tròn

extension UIImageView{ 

    func asCircle(){ 
     self.layer.cornerRadius = self.frame.width/2; 
     self.layer.masksToBounds = true 
    } 

} 

Chỉ cần gọi MyImageView.asCircle()

+2

Vâng, tôi đã triển khai chính xác giải pháp tương tự trong mã của mình, ngoại trừ việc tôi đã mở rộng UIView, vì tôi có thể gọi cùng một phương thức ngay cả đối với các đối tượng khác (như nút ...). – Andrej

0

Tôi sẽ thêm một phần mở rộng hơi phổ biến hơn để UIImageView rằng sẽ làm việc với hình ảnh không vuông . Để lưu ý rằng nó sẽ hoạt động chậm hơn so với phương pháp cornerRadius.

extension UIImageView { 
    @IBInspectable public var asEllipse:Bool { 
     get { 
      if let mask = self.layer.mask { 
       return mask.name == kMaskLayerName 
      } 
      return false; 
     } 

     set { 
      if (newValue) { 
       let ellipseMask = CAShapeLayer() 
       ellipseMask.name = kMaskLayerName 
       ellipseMask.path = CGPathCreateWithEllipseInRect(self.bounds, nil) 
       ellipseMask.strokeColor = UIColor.clearColor().CGColor 
       ellipseMask.fillColor = UIColor.whiteColor().CGColor 
       self.layer.mask = ellipseMask 
      } else if self.asEllipse { 
       self.layer.mask = nil 
      } 
     } 
    } 

} 

private let kMaskLayerName="EllipseMaskLayer" 
+0

Tại sao tốc độ này chậm hơn 'angleRadius'? –

+0

Tôi đoán đó là phân bổ đối tượng làm chậm nó xuống: một 'CAShapeLayer', một' CGPath' và hai trường hợp 'UIColor'. Mặc dù đã thử nghiệm rằng đối với hình ảnh ô trong 'tableView' trên iPhone 5 trở lên thì không có sự chậm lại đáng chú ý khi cuộn. TBH Tôi đã không thực hiện một cuộc điều tra tối ưu thích hợp trong các dụng cụ. – user3099609

0

Swift 4: Điều này sẽ hiển thị .png của bạn trong một vòng kết nối.

  1. Kéo (ctrl + click) IBOutlet của hình ảnh về mã của bạn.

enter image description here

cornerRadius Bán kính để sử dụng khi vẽ các góc tròn cho nền của lớp. Có thể hoạt hình. https://developer.apple.com/documentation/quartzcore/calayer/1410818-cornerradius

clipsĐặc tínhBắt buộc Giá trị Boolean xác định xem bản xem phụ có bị giới hạn trong giới hạn của chế độ xem hay không. https://developer.apple.com/documentation/uikit/uiview/1622415-clipstobounds

2.Inside viewDidLoad(), Sử dụng thuộc tính cá thể layer.cornerRadiusclipsToBounds.

profileImage.layer.cornerRadius = 50 
profileImage.clipsToBounds = true 
Các vấn đề liên quan