2015-08-25 21 views
9

Tôi có một mã mà có một cái nhìn và vòng nó góc - biến nó thành một vòng tròn:quan điểm tròn không làm việc trong iOS 9

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 8, 8)]; 
imageView.layer.cornerRadius = imageView.frame.size.width/2; 
imageView.layer.masksToBounds = YES; 

này hoạt động tốt trên iOS 7 và iOS 8 - nhưng không hoạt động trên iOS 9. Làm cách nào để khắc phục sự cố?

+0

Nếu điều này thực sự không hoạt động, ứng dụng của tôi sẽ bị lỗi:/ –

+0

Nó không bị lỗi - nhưng nó vẫn ở dạng hình chữ nhật – YogevSitton

+0

Tôi vừa kiểm tra, nhưng nó hoạt động. bạn có thể thay đổi dot.frame.size.width/2 để nói 4? – tafh

Trả lời

9

Hóa ra thêm một màu nền cho ImageView ấn định vấn đề ...

+0

Nếu đây là câu trả lời bạn nên chấp nhận nó. –

+0

Tôi đồng ý - nhưng tôi phải chờ đến ngày mai ... – YogevSitton

+0

Nó phải là màu thích hợp khi clearColor không hoạt động. – Linox83

0

Nếu tính năng này không hoạt động nữa, hãy tạo thành phần. Phân lớp từ UIView. Thực hiện thay đổi này trên lớp con này:

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

và thêm hình ảnhXem vào chế độ xem này. Điều này sẽ giải quyết vấn đề.

@implementation CircleImageView{ 

    UIImageView* imageView; 
    CGFloat width; 

} 

- (instancetype) initWithTopLeft:(CGPoint)topLeft width:(CGFloat)wdth{ 

    self = [super initWithFrame:CGRectMake(topLeft.x, topLeft.y, wdth, wdth)]; 
    if (self) { 
     width = wdth; 

     [self createContent]; 

     self.layer.cornerRadius = width/2.; 
     self.clipsToBounds = YES; 
    } 
    return self; 
} 

- (void) createContent{ 
    imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, width, width)]; 
    [self addSubview:imageView]; 

} 
+1

Làm sao bạn biết rằng điều này sẽ giải quyết được vấn đề nếu bạn không biết nguyên nhân của vấn đề? –

+0

Tôi đang sử dụng hình ảnh vòng tròn của mìnhXem như thế này, vì có một số lỗi một lần, khi tôi không thể đặt góc nhìn của ImageView. – incmiko

+0

Bạn thiết lập bán kính góc của lớp giống như cách bạn làm. Tại sao điều này nên hoạt động trên một lớp con của UIImage nhưng không hoạt động trên UIImage trong iOS 9? –

0

Hãy thử thêm Quartzcore.framework trong Liên Kết Framework và Libraries

sau đó nhập khẩu giống nhau trong tập tin viewController.m bạn

0

Tôi jsut subClass UIImageView, như thế này, tôi sử dụng PureLayout kiểm soát imageView, như dưới đây:

[imageViewIcon autoPinEdge:ALEdgeLeft toEdge:ALEdgeLeft ofView:self.contentView withOffset:20]; 
[imageViewIcon autoPinEdge:ALEdgeTop toEdge:ALEdgeTop ofView:self.contentView withOffset:10]; 
[imageViewIcon autoPinEdge:ALEdgeBottom toEdge:ALEdgeBottom ofView:self.contentView withOffset:-10]; 
[imageViewIcon autoMatchDimension:ALDimensionHeight toDimension:ALDimensionWidth ofView:imageViewIcon]; 




-(instancetype)init 
{ 
if (self = [super init]) { 

} 

return self; 
} 
-(void)layoutSubviews 
{ 
[super layoutSubviews]; 
[self layoutIfNeeded]; 

self.layer.masksToBounds = YES; 
self.layer.cornerRadius = self.width*0.5; 



} 
0

Nhờ @YogevSitton câu trả lời tôi đã tìm kiếm trên tài liệu và thấy điều này:

Nó dường như là một cái gì đó trong apple docs:

Theo mặc định, bán kính góc không áp dụng cho hình ảnh trong thuộc tính nội dung của lớp ; nó chỉ áp dụng cho màu nền và đường viền của lớp.

Vì vậy, để đặt gócRadius thành UIImageXem nó cần phải có backgroundColor.

Các vấn đề liên quan