Ebeveyn UIView çerçevesini (boyutu) canlandırırken UILabel'ın otomatikleştirilmesi çerçevesi

Alt öğesi UIView olan (UILabel'ın aşağıdaki kodda kullandığı) bir alt öğesi var. Ağacı üst sınırı için ayarlanmış ve autoresizingMask esnek genişlik ve yüksekliğe ayarlanmış.

UIView* parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
UILabel* childLabel = [[UILabel alloc] initWithFrame:parentView.bounds];
childLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
childLabel.textAlignment = UITextAlignmentCenter;
childLabel.text = @"Hello";

Ebeveyn görünümünün çerçevesini, özellikle boyutunu ve animasyonun bir parçası olarak alt görünümü yeniden boyutlandırabilmeyi istiyorum:

[UIView animateWithDuration:1.0 animations:^{ parentView.frame = CGRectMake(0, 0, 160, 240); }];

Bu animasyonun bir sonucu olarak UILabel'ın metnini ana görünümün animasyonuyla birlikte canlandırmasını istiyorum, böylece görsel olarak metnin (160, 240) ila (80, 120) ortalanarak hareket ettiğini göreceksiniz. Bununla birlikte, animasyon yerine, alt görüntünün çerçevesi animasyonun sonunda olması gereken değere derhal ayarlanır, böylece animasyonun başladığı sırada metnin konumunu hemen atlar.

Bir animasyonun parçası olarak otomatikleştirmek için alt bölümler almanın bir yolu var mı?

14

1 cevap

Başım ağrıyor. Başım ağrıyor. Ama asıl mesele şu ki UIKit, metnin animasyonun her karesini yeniden oluşturması gerekmiyor, bu yüzden UILabel'ın içeriği canlandırılamaz. . Varsayılan olarak, UILabel'in contentMode özelliği UIViewContentModeRedraw'dir, yani UILabel, özellik ayarlandığı anda hedef boyutta yeniden çizilir.

ContentMode'u UIViewContentModeCenter olarak değiştirirseniz, içerik yeniden çizilmez ve UILabel'de ortalanacaktır.

childLabel.contentMode = UIViewContentModeCenter;
20
katma
Yeterince büyük! Teşekkürler!
katma yazar Kjuly, kaynak
Bu harika bir bilgi. UIViewContentModeCenter aslında ihtiyacım olan şey için çalışıyor - ana görünümün çerçevesi küçülüyor veya büyürken metnin merkezde kalması için. Teşekkürler.
katma yazar Shane Arney, kaynak