2012-09-09 9 views
5

Tôi đã tạo một "TransformView" phân lớp UIView để hỗ trợ chế độ xem hai mặt mà tôi đang sử dụng trong hoạt ảnh lật. Điều này đã được đề xuất trong bài viết khác, ví dụ:Sử dụng cảnh báo CATransformLayer: thay đổi độ mờ thuộc tính trong lớp chỉ chuyển đổi, sẽ không có hiệu lực

How to rotate a flat object around its center in perspective view?

@interface TransformView : UIView 
@end 

@implementation TransformView 
+ (Class)layerClass { 
    return [CATransformLayer class]; 
} 
@end 

Tất cả đều hoạt động tốt, nhưng tôi nhận được một cảnh báo mỗi khi tôi tạo ra một đối tượng TransformView sử dụng:

TransformView *newTransformView=[[TransformView alloc] initWithFrame:frame]; 

Cảnh báo nói:

- thay đổi thuộc tính mờ trong chỉ chuyển đổi lớp, w bệnh không có hiệu lực

Tôi đoán lớp UIView được initialising thuộc tính mờ đục mà thường tốt cho một CALayer nhưng không phải là một CATransformLayer.

Mã phân lớp có khá dodgy không? Nếu vậy, bạn có thể tạo chế độ xem 2 mặt cho hoạt ảnh lật khác như thế nào?

Bất kỳ ý tưởng nào về cách dừng cảnh báo?

Tôi có nghi ngờ rằng việc tạo một TransformView từ một tệp nib thay vì initWithFrame tránh cảnh báo, nhưng có vẻ khó hiểu để làm điều này chỉ để tránh cảnh báo.

+0

Nộp dưới tên [rdar: // 23069576] (https://openradar.appspot.com/23069576) –

Trả lời

3

bạn có thể tránh được cảnh báo bằng cách thêm phần mở rộng này ở đâu đó trong mã của bạn:

@implementation CATransformLayer (MyExtension) 
-(void)setOpaque:(BOOL)opaque 
{ 
    return; 
} 
@end 

Tất nhiên điều này cũng sẽ ngừng cảnh báo cho những nỗ lực sai lầm của riêng bạn để thiết lập thuộc tính mờ đục của một CATransformLayer.