2012-04-18 32 views
18

Ben programlı böyle NSTextField oluşturduğunuz kakao app oluşturma, NSTextField Dikey hizalama

NSView *superView = [[NSView alloc] initWithFrame:NSMakeRect(0, 300, 1400, 500)]; 
NSTextField *myTextField = [[NSTextField alloc] initWithFrame:NSMakeRect(180, 100, 1000, 300)]; 
[myTextField setStringValue:myText]; 
[myTextField setEditable:NO]; 
[myTextField setBezeled:NO]; 
[myTextField setDrawsBackground:NO]; 
[myTextField setSelectable:NO]; 
[myTextField setFont:[NSFont fontWithName:@"Futura" size:22]]; 
[superView addSubview:myTextField]; 
[superView setAutoresizesSubviews:YES]; 
[myTextField setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; 
[self.window.contentView addSubview:superView]; 

Şimdi benim metnin dikey hizalama istiyorsanız ve metin uzunluğuna göre ayarlanabilir olmalıdır.
Herhangi bir öneriniz var mı? Lütfen önerinizi paylaşın :)

Çok teşekkürler .. !!

cevap

11

Neler yapmanız mümkündür, ancak NSTextFieldCell alt sınıfını yapmak ve sonra bu alt sınıfı NSTextField öğenizde kullanmanız gerekir. Eğer geçersiz istediğiniz anahtar yöntemler o bile gitmek için indirilebilir sürümü hazır içerir drawingRectForBounds:, selectWithFrame: ve bu konuda

Here is a blog post from the fantastic Daniel JalkuteditWithFrame: bulunmaktadır. Gönderi oldukça eski ama yine de iyi çalışıyor olmalı.

+0

Teşekkürler sosborn .. !! Bunu deneyeyim .. Eğer herhangi bir sorun varsa size geri döneceğim. :) – iUser

+0

Tamam, "RSVerticallyCenteredTextFieldCell.h" ve "RSVerticallyCenteredTextFieldCell.m" sınıfına sahibim ama bunu nasıl kullanacağımı bilmiyorum, myTextField'ım ile. – iUser

+0

NSControl'e bakın (NSTextField öğesinden devralınır). SetCellClass adlı bir yönteme sahiptir: Apple'ın Kontrol ve Hücre Programlama Kılavuzu dokümanı da okumakta fayda var. – sosborn

1

Metin alanını dize boyutuna ayarlamak için metin boyutunu NSString 's sizeWithFont: constrainedToSize: lineBreakMode: ile hesaplamanız ve çerçeveyi ayarlayarak metin alanının boyutunu ayarlamanız gerekir.

Dikey hizalama için bu question'a bakın (ve cevaplar).

+1

@iUser, UITextField ürününden farklı olan NSTextField ürününü soruyor. NSTextField contentVerticalAlignment özelliğine sahip değil. – sosborn

+0

Thanx Kai .. !! 'ContentVerticalAlignment' seçeneği vermeyen 'NSTextField' kullanıyorum. Herhangi bir öneri ? – iUser

+0

Üzgünüm. Sadece cevabımı değiştirdim. –

-1

ViewWillDraw'ı geçersiz kılın ve NSTextField ürününü bu noktada ana görünümünün ortasında konumlandırın. Bu, canlı yeniden boyutlandırma ile de çalışır. Yeni boyuta uyan yazı tipini bulmak için bu noktada yazı tipi boyutunu da ayarlayabilirsiniz.

+0

downvote'unuzu açıklayın ve bunun 2015 yılında yanıtlandığını unutmayın. Bu, NSTextFieldCell'deki özel çizimi yapmak yerine NSTextField uygulamasında yaptığınız gibi, kabul edilen yanıtla benzerdir ... –