2009-12-23 22 views
12

NSTextView'a soluna biraz dolgu/kenar boşluğu nasıl verebilirim? Bir NSTextField içinde nasıl yaptığınızı biliyorum (NSTextFieldCell alt sınıflandırma tarafından), ancak NSTextView'da nasıl yapıyorsunuz?NSTextView vermek Bazı dolgu/kenar boşluğu

DÜZENLEME: Biraz daha fazla bilgi: 1. Metin Görünümü'nde yalnızca düz metin yok, zengin bir metin yok ve uygun bir metin düzenleyici (örn. Paragraf içi) gibi başka hiçbir süslü öğe yok. 2. setTextContainerInset: kullanmak mümkün mü?

cevap

16

NSTextView alt sınıflarını deneyebilir ve textContainerOrigin'u geçersiz kılabilirsiniz.

Ayrıntılar here.

Örneğin bu alt sınıf Sadece bu bir güncelleme eklemek için 10

@implementation MyTextView 

- (void)awakeFromNib { 
    [super setTextContainerInset:NSMakeSize(15.0f, 5.0f)]; 
} 


- (NSPoint)textContainerOrigin { 
    NSPoint origin = [super textContainerOrigin]; 
    NSPoint newOrigin = NSMakePoint(origin.x + 5.0f, origin.y); 
    return newOrigin; 
} 

@end 
+1

Bu yaklaşımla tam olarak arasındaki fark nedir? SetTextContainerInset: '? –

+2

@patrick 'setTextContainerInset, üst ve kenarları eşit miktarlarda toplar. Menşei kaydırmak, bu örnekte asimetrik dolgu sağlar. – Abizern

2

Muhtemelen bir paragraf stili oluşturun (büyük olasılıkla varsayılan paragraf stilinin değiştirilebilir bir kopyasını oluşturarak, daha sonra baş girintisini ve ilk satır baş girintisini istediğiniz sol kenar boşluğuna getirin. Daha sonra bu paragraf stilini değer olarak ayarlayın. görünümün metin deposunun tüm içeriği için NSParagraphStyleAttributeName özniteliği

Bunun RTF'de göründüğünü ve görüntü tarafından size verilen/verilen HTML verilerini gösterebileceğini unutmayın. , kullanıcı metni düzenleyebilir ve bu metni alırsınız veya bu metni alırsınız), o zaman muhtemelen bu çözümden kaçınmalısınız.Kullanıcı cetveli gösterebilir ve paragraf stilini kendileri düzenleyebilirse, kesinlikle av Bu çözümü yerine koy.

4

TextEdit uygulamasının yaptığı gibi (Sayfadan Sayfaya moduna getirildiğinde), metin görünümünü daha büyük bir görünümün içine yerleştirmek ve daha büyük görünümü kaydırma görünümünün belge görünümü olarak ayarlamaktır. Kurmak için daha çok iş vardır, ancak sunum bilgisini (özel olarak özelleştirilmiş bir paragraf stili biçiminde) modele (metin) sızdırmaz.

4

bir üst ve alt 20 5 solun marjı ve hakkını verecektir. iOS7, TextContainerInset adı verilen UITextView öğesine bir özellik ekler. SetTextContainerInset öğesini çağırmak, içerik için TextView'un içindeki marjları oluşturacaktır.

+1

OS X şimdi de bu özelliğe sahiptir. –