Birisi bana bir UIScrollView
örnekte contentInset özelliğinin ne için kullanıldığını açıklayabilir mi? Ve belki bir örnek verebilir misiniz?
Birisi bana bir UIScrollView
örnekte contentInset özelliğinin ne için kullanıldığını açıklayabilir mi? Ve belki bir örnek verebilir misiniz?
Yanıtlar:
İç metinlerin içerik görünümü ile kapalı kaydırma görünümü arasındaki mesafesini ayarlar.
Obj-Cı
aScrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 7.0);
Swift 5.0
aScrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 7.0)
İşte bilgilendirici bir ekran görüntüsü olan kaydırma görünümleriyle ilgili iyi bir iOS Referans Kütüphanesi makalesi (şek 1-3) - Burada metin yoluyla çoğaltacağım:
_|←_cW_→_|_↓_
| |
---------------
|content| ↑
↑ |content| contentInset.top
cH |content|
↓ |content| contentInset.bottom
|content| ↓
---------------
_|_______|___
↑
(cH = contentSize.height; cW = contentSize.width)
Kaydırma görünümü, içerik görünümünü ve belirtilen içerik ekleri tarafından sağlanan dolguları kapsar.
padding
özelliğine benziyor .
Jball'un cevabı içerik eklerinin mükemmel bir açıklaması olsa da, ne zaman kullanılacağı sorusuna cevap vermez. Diyagramlarından ödünç alacağım:
_|←_cW_→_|_↓_
| |
---------------
|content| ↑
↑ |content| contentInset.top
cH |content|
↓ |content| contentInset.bottom
|content| ↓
---------------
|content|
-------------↑-
Bunu yaptığınızda elde edeceğiniz şey budur, ancak yararlılığı yalnızca kaydırma yaptığınızda gösterilir:
_|←_cW_→_|_↓_
|content| ← content is still visible
---------------
|content| ↑
↑ |content| contentInset.top
cH |content|
↓ |content| contentInset.bottom
|content| ↓
---------------
_|_______|___
↑
Üstteki içerik satırı, hala kaydırma görünümü çerçevesinin içinde olduğu için görünmeye devam edecektir. Üst ofseti düşünmenin bir yolu, "en üste kaydırdığımızda içeriği kaydırma görünümünde ne kadar aşağı kaydırmamız" dır.
Bunun gerçekten kullanıldığı bir yeri görmek için iphone'daki yerleşik Fotoğraflar uygulamasına bakın. Gezinme çubuğu ve durum çubuğu saydamdır ve kaydırma görünümünün içeriği altında görünür. Çünkü kaydırma görünümünün çerçevesi o kadar uzar. Ancak içerik eki olmasaydı, içeriğin üst kısmına kadar gittiğinizde asla içeriğin üst kısmının şeffaf gezinme çubuğunu temizlemesini sağlayamazsınız.
İçerik ekleri, Kullanıcı Arayüzünün diğer bölümlerinin altına inen ancak kaydırma çubukları kullanılarak erişilebilir durumda olan içeriğe sahip olma sorununu çözer. Başka bir deyişle, İçerik Eklentisinin amacı etkileşim alanını gerçek alanından daha küçük yapmaktır.
Ekranın üç mantıksal alanına sahip olduğumuzu düşünün:
TOP BUTTONS
TEXT
BOTTOM TAB BAR
ve METİN'in ÜST DÜĞMELER altında hiçbir zaman saydam olarak görünmemesini istiyoruz, ancak Metnin BOTTOM SEKME ÇUBU'nun altında görünmesini ve yine de BOTTOM SEKME ÇUBU'nun altında şeffaf olarak oturan metni güncelleyebilmemizi istiyoruz.
Daha sonra üst menşei ÜST DÜĞMELER altında olacak şekilde ve yüksekliği ALT SEKME ÇUBUĞU'nun tabanını içerecek şekilde ayarlayacağız. ALT SEKME ÇUBUĞU içeriğinin altında oturan Metne erişim elde etmek için, alt gömleği ALT SEKME ÇUBUĞU'nun yüksekliği olarak ayarlayacağız.
İç metin olmadan, kaydırma çubuğu içeriği yazabileceğiniz kadar yukarı kaydırmanıza izin vermez. İç metin ile, içeriğin içerik iç metin boyutunun fazladan "BOŞ İÇERİĞİ" olması gibi. Boş metin, gerçek "içeriğe" eklenmiştir - bu şekilde kavramı hatırlıyorum.
İçine dolgu eklemek için kullanılır UIScrollView
Olmadan contentInset
, tablo görünümü şu şekildedir:
Sonra ayarlayın contentInset
:
tableView.contentInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)
Etkisi aşağıdaki gibidir:
Daha iyi görünüyor, değil mi?
Ve incelemek için bir blog yazıyorum contentInset
, eleştiri hoş geldiniz.
Harika bir soru.
Aşağıdaki örneği düşünün ( scroller
bir UIScrollView):
float offset = 1000;
[super viewDidLoad];
for (int i=0;i<500; i++) {
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(i * 100, 50, 95, 100)] autorelease];
[label setText:[NSString stringWithFormat:@"label %d",i]];
[self.scroller addSubview:label];
[self.scroller setContentSize:CGSizeMake(self.view.frame.size.width * 2 + offset, 0)];
[self.scroller setContentInset:UIEdgeInsetsMake(0, -offset, 0, 0)];
}
Ekler, kaydırıcıyı istediğiniz içerik üzerinde bir "pencere" bulundurmaya zorlamanın SADECE yoludur. Hala bu örnek kod ile uğraşmak, ama fikir var: bir "pencere" almak için insets kullanın UIScrollView
.