Sobes.tech
Middle

iOS'ta kaydırma yaparken kullanıcı arayüzü öğelerinin yüksekliği ve genişliği nasıl değişir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Varsayılan bir uygulamada, UIView öğelerinin yüksekliği ve genişliği, UIScrollView veya onun alt sınıfları (UITableView, UICollectionView) içinde kaydırma sırasında değişmez.

Öğelerin konumu (frame.origin değeri), kaydırma sırasında bounds ile ilişkili olarak değişir. scroll view'un bounds özelliği kaydırma sırasında kayar, ancak boyutu (bounds.size) sabit kalır (yani frame.size ile aynıdır).

Kaydırma sırasında kaydırılabilen içeriğin boyutu, contentSize özelliği ile belirlenir. contentSize sınırları içindeki öğeler kaydırma sırasında görünür olur.

Öğelerin boyutunun kaydırma sırasında değişmesi (paralaks veya sıkıştırma/genişletme efekti) otomatik gerçekleşmez ve ek mantık gerektirir:

  1. UIScrollViewDelegate içinde uygulama: scrollViewDidScroll(_:) metodunda contentOffset değişikliğinin izlenmesi ve ilgili öğenin frame veya bounds'unun manuel olarak değiştirilmesi.

    // Kaydırma sırasında öğenin yüksekliğini değiştirme örneği
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let yOffset = scrollView.contentOffset.y
        let initialHeight: CGFloat = 200
        let maxHeight: CGFloat = 300
    
        // Aşağı kaydırırken sıkıştırma, yukarı kaydırırken genişletme örneği
        let newHeight = max(0, min(maxHeight, initialHeight - yOffset))
        
        someView.frame.size.height = newHeight
        // Bağlantı noktası yukarı değilse konumun işlenmesi
    }
    
  2. UIVisualEffectView kullanımı: Bulanıklık veya vibrasyon efektleri için, bunlar kaydırma sırasında alttaki içeriğe bağlı olarak değişebilir.

  3. Özel düzenler: UICollectionView içinde, kaydırma sırasında hücrelerin dönüşümlerini yönetmek için özel bir UICollectionViewLayout oluşturulabilir.

  4. Animasyonlar: UIViewPropertyAnimator veya diğer animasyon mekanizmaları kullanılarak, kaydırma olayıyla tetiklenen animasyonlar başlatılabilir.

Temel davranış, boyutun değişmemesidir. Boyut değişiklikleri, belirli bir uygulama sonucu olarak ortaya çıkar.