2016-07-01 26 views
3

Wie fügen Sie Padding auf der linken Seite des Textes in einer Textfeldzelle mit swift? Vorherige Antworten sind nur für UITextField oder in Objective C. Um es klar zu sagen, dies ist für ein NSTextField.NSTextField Padding auf der linken Seite

+0

Ein NSTextField scheint nicht die gleichen Elementfunktionen wie ein UITextField zu haben. – user3225395

+0

@NSNoob Weil es für OS X ist? – Desdenova

+0

@Desdenova Genau. Ich entwickle eine App für MacOS. Ich wünschte es gäbe mehr Ähnlichkeit zwischen iOS und iOS! – user3225395

Antwort

5

Here ist ein Beispiel für jemanden, der eine benutzerdefinierte NSTextFieldCell in Objective C.

portiert Swift, der so aussieht gemacht hat:

import Cocoa 

class PaddedTextField: NSTextFieldCell { 

    @IBInspectable var leftPadding: CGFloat = 10.0 

    override func drawingRectForBounds(rect: NSRect) -> NSRect { 
     let rectInset = NSMakeRect(rect.origin.x + leftPadding, rect.origin.y, rect.size.width - leftPadding, rect.size.height) 
     return super.drawingRectForBounds(rectInset) 
    } 
} 

Ich habe die Polsterung als @IBInspectable Eigenschaft hinzugefügt. Auf diese Weise können Sie es in Interface Builder beliebig einstellen.

Um die neue verwenden PaddedTextField Sie ziehen Sie einfach eine regelmäßige Text Field auf Ihre xib Datei

Normal Text Field Cell

und dann die Klasse des inneren TextFieldCell ändern PaddedTextField zu sein (oder was Sie Ihre Klasse aufrufen Ende)

Change class to be PaddedTextField

Und voila

The final result

Hoffnung, die Ihnen hilft.

+0

Vielen Dank! Du bist der Mann. Klappt wunderbar. – user3225395

+0

Dies funktioniert nur, wenn keine Hintergrundfarbe festgelegt wurde oder der Rahmen nicht angepasst wurde. Siehe hierzu: http://stackoverflow.com/questions/37870474/osx-nntextfield-with-layer-background-color-not-working – Neovibrant

Verwandte Themen