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ı?