2017-10-25 54 views
6

iOS 10'a kadar, esnek boşluk çubuğu öğeleriyle birlikte UIToolbar, öğeleri arasında otomatik olarak yazı tipini azaltacak ve böylece tüm metinler ekranda görüntülenecektir. Aşağıdaki örnek (iOS 10): Hiç XCode 9 beri simülatörü iOS 11 çalıştırırkeniOS11'de, UIToolbar'ın tüm öğeleri sığacak şekilde yerleştirmesi nasıl sağlanır?

iOS 10 Sample

, benim araç böyle görüntülenir:

iOS 11 Sample

Sadece metin yoktu yazı tipi boyutu küçültüldü, ancak son çubuk düğme öğesi (metne sahip olmayan, yalnızca bir görüntü) kayboldu.

Bunu çözmeyi denedim, iOS 11, UIToolbar artık Çerçeveler yerine Otomatik Düzenleme'yi kullandığını öğrendim. Bu sorunla ilgili bir şekilde gönderilen bazı yayınlar, öğeler için genişlik ve/veya yükseklik belirtmek için öğeler için kısıtlamalar oluşturulmasını önerir. Bununla birlikte, elde etmek istediğim, yazı tipi boyutunu küçültmek anlamına gelse bile, araç çubuğundaki herşeye uymasıdır. O zaman programlı olarak sabit genişlik/yükseklik ayarlamaya gidebileceğimi sanmıyorum. Ayrıca, bu bir Storyboard üzerinde IB kullanılarak inşa edilmiştir. UIBarButton sınıfı, UILabel (metin öğeleri için) veya ImageView (görüntü içeren öğeler için) erişimine izin vermiyor. İnceledim ve çalışma zamanında customViewnil.

Ben olmadan herhangi bir şans true için adjustsFontSizeToFitWidth seti ile bir UILabel için customView ayarlayarak, kodu aracılığıyla öğeleri oluşturma çalıştı. IOS 11'de esnek alan çubuğu öğelerinin amacı hakkında hiçbir fikrim yok.

Daha önce sahip olduğum davranışı nasıl taklit edebilirim? Tüm öğeleri sığdırın ve metni otomatik olarak yeniden boyutlandırın mı?

+0

değerli işlevselliği kesildi düşünüyorsanız, Apple ile hata raporu. – matt

+0

@matt Olabilir, evet. Sadece yanlış bir şey yaptığımı farz ettim. –

+0

Her büyük güncellemede bir şey kaybettiler ... – Dmitry

cevap

0

elle örneğin UIBarButtonItems boyutunu ayarlamak gerekir:

NSUInteger smallFontSize = SMALL_FONT; // e.g. font size of 12 
self.smallFont = [UIFont boldSystemFontOfSize:smallFontSize]; 
self.smallFontAttributes = @{NSFontAttributeName: self.smallFont}; 

- (void)shrinkButtonFontSize:(NSArray *)barButtonItems { 
for (UIBarButtonItem* button in barButtonItems) { 
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateNormal]; 
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateSelected]; 
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateDisabled]; 
} 
}