2016-04-08 12 views
2

OS X'de CALayer var, büyütme ve büyütme filtreleri aşağıdakine benzer şekilde ayarlanmış, ancak büyütme ayarı katman boyutuna bakılmaksızın kullanılıyor gibi görünüyor.CALayer'ın büyütmeSürüm yok OS X

layer.magnificationFilter = kCAFilterNearest; 
layer.minificationFilter = kCAFilterTrilinear; 

trilinear filtreleme katmanı küçük olduğunda çalışır, ancak genişletilmiş zaman, katman yerine en yakın komşusu, doğrusal + büyük mipmap seviyesinin neye benzediğini ile çizilir. Bir test olarak, büyütme filtresini kCAFilterNearest'e ayarlıyorum, bu da tüm ölçek seviyeleri için kCAFilterNearest ile oluşturulmasına neden oluyor - bu yüzden, katmanın çekildiği boyuttan bağımsız olarak büyütmeFiltresi kullanılıyor gibi görünüyor.

Bu kodu iOS'ta denedim ve beklendiği gibi çalıştım, bu yüzden bu OS X'in görselleştirmesinin biraz tuhaflığı olmalı.

tam kodu:

@implementation MipView 

- (instancetype)initWithCoder:(NSCoder *)coder { 

    self = [super initWithCoder:coder]; 

    NSImage *image = [NSImage imageNamed:@"image"]; 

    CALayer *layer = [CALayer layer]; 
    layer.magnificationFilter = kCAFilterNearest; 
    layer.minificationFilter = kCAFilterTrilinear; 
    layer.frame = CGRectMake(0, 0, image.size.width, image.size.height); 
    layer.contents = (__bridge id _Nullable)[image CGImageForProposedRect:NULL context:nil hints:nil]; 

    [self setLayer:[CALayer layer]]; 
    [self setWantsLayer:YES]; 
    [self.layer addSublayer:layer]; 

    return self; 
} 

- (IBAction)slider:(id)sender { 
    self.layer.sublayerTransform = CATransform3DMakeScale([sender doubleValue], [sender doubleValue], 1); 
} 

@end 

Çekirdek Animasyon katmanı kadar ölçeklendirilir büyütme filtre değeri kullanmak almanın bir yolu var mı?

cevap

0

Bu OS X'deki bir hatadır. Temel animasyon mühendisleri araştırıyor gibi görünmektedir, ancak bu yazılımı maxOS Sierra beta 5