2013-10-28 22 views
22

tôi có uitableview với danh sách liên hệ. Tôi muốn có hình ảnh của mỗi liên hệ trong một khung hình vòng tròn như trong màn hình đăng nhập của mavericks. Bất kỳ đề xuất làm thế nào để làm điều này trong một uitableviewCell?hình ảnh trong khung hình tròn iOS

enter image description here

+0

của bạn nếu bạn xoay câu hỏi của bạn với câu trả lời của tôi chấp nhận nó plz –

Trả lời

76

Tôi đoán rằng bạn có imageView của bạn bên trong Cell của bạn, vì vậy những gì bạn có để làm cho có tác dụng tương tự là sử dụng một đường viền vô hình. Sử dụng mã này để làm cho hiệu ứng này:

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

UIImageView của bạn phải có cùng một chiều cao và chiều rộng cũng có thể bạn phải nhập khẩu khuôn khổ quartzCore trong dự án

+0

Có thể đặt những thay đổi này trong bảng phân cảnh không? hoặc giải pháp duy nhất là trong mã? –

+0

chỉ giải pháp mã:/ –

+0

Vui lòng xem xét hiệu suất khi ở chế độ xem cuộn (chẳng hạn như uitableview). – ZYiOS

1

dường như tôi có thể làm một rect tròn như thế này

float fw, fh; 
if (ovalWidth == 0 || ovalHeight == 0) { 
    CGContextAddRect(context, rect); 
    return; 
} 
CGContextSaveGState(context); 
CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect)); 
CGContextScaleCTM (context, ovalWidth, ovalHeight); 
fw = CGRectGetWidth (rect)/ovalWidth; 
fh = CGRectGetHeight (rect)/ovalHeight; 
CGContextMoveToPoint(context, fw, fh/2); 
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); 
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); 
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); 
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); 
CGContextClosePath(context); 
CGContextRestoreGState(context); 

và sau đó đưa hình ảnh bên trong, nó sẽ tự động cắt bớt:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSaveGState(context); 
addRoundedRectToPath(context, self.frame, 10, 10); 
CGContextClip(context); 
[image drawInRect:self.frame]; 
CGContextRestoreGState(context); 
Các vấn đề liên quan