Temel Animasyon kullanımı dışında, ızgara stili görünümü oluşturmaya çalışıyorum (NSCollectionView
benzeri). Oldukça uzağım ve yapacak en önemli şey kaydırma yapmaktır. CALayer ile NSScrollView Kullanma
bugüne kadar benim kurulum
BirNSView
alt sınıfı (katman destekli) olması ve başlatma üzerine yarattığı ve ana görünümü tabakasının bir alt tabakanın olarak
ızgara katmanı ekler. Alt görünümlerini ızgara benzeri bir oluşumda düzenleyen ızgara katmanı için özel bir
CALayoutManager
oluşturdum. Beklendiği gibi, alt tabakaları ızgara katmanına eklediğimde, düzen yöneticisi çağrılır ve katmanlar otomatik olarak konumlandırılır. Bu noktaya kadar, her şey gerektiği gibi çalışıyor.
Kaydırmayı uygulamak için özel görünümün bir üst öğesi olarak NSScrollView
kullanmayı denediğimde sorun geliyor. Bunu şu şekilde ayarladım: Özel görünümümü, Arabirim Oluşturucu'da NSScrollView
'un bir alt görünümü olarak oluşturdum. Ardından, düzen yöneticisi sınıfımda, delegate
özelliğini ekledim ve başlatma sırasında, görünüm alt sınıfım kendisini düzen yöneticisinin temsilcisi olarak ayarlıyor. Mizanpaj yöneticisinin layoutSublayersForLayer:
yönteminin sonunda, temsilci ile temsilci yöntemini layoutManager:contentHeightChanged:
.
- (void)layoutManager:(MyLayoutManager*)manager contentHeightChanged:(CGFloat)height;
{
CGFloat newHeight = [[self enclosingScrollView] contentSize].height;
if (height > newHeight) {
newHeight = height;
}
NSRect newFrame = [self frame];
newFrame.size.height = newHeight;
[self setFrame:newFrame];
}
O, sadece yeni yükseklik kaydırma görünümünde içeriği boyutundan daha büyüktür ve birlikte görünümler çerçevesini ayarlar olup olmadığını görmek için oldukça basit denetler oluyor: İşte benim NSView
alt sınıfta o yöntemin uygulanmasıdır yeni yükseklik.
Bu işler - belirli bir dereceye kadar. Görünüm yeniden boyutlandırıldığında, görüntünün çerçevesini, içeriğin tüm yüksekliğini kapsüllemek için gerektiği gibi kaydırır, böylece kaydırma çubukları görünür. Sorun: Görünüm görünür kaydırma çubuklarıyla yeniden boyutlandırıldığında, ızgara katmanının alt katmanları.
Gördüğünüz gibi kaydırma çubukları (başka bir deyişle görünmez olduğunda içeriğin yüksekliği sınırları içinde oturmakta, hiçbir sorun yoktur: Burada sorunu gösteren bir video kaydırma görünümü). Bunun, mizanpaj yöneticisinde bir sorun olmadığını ve tek sütunlarla uğraştığını söyleyebilirim, çünkü aynı şeyi kaydırma görünümü olmadan denedim ve hiçbir sıkıntı yok.
Her türlü tavsiye büyük önem taşımaktadır.
Bunu nasıl yaptığınıza dair bir örnek verebilir misiniz? –