Acaba de comenzar a aprender Swift y creó un poco de macOS aplicación en la que se desea utilizar un NSScrollView para mostrar una atribuido Cadena. He intentado:

@IBOutlet var ScrollViewOutlet : NSScrollView
var attributedString = NSMutableAttributedString(string: myText)
ScrollViewOutlet.insertText(attributedString)

Pero que no parece funcionar. Me encuentro un poco confuso, ya que haciendo exactamente lo mismo con un NSTextView lugar funciona como un encanto.

Lo que me estoy perdiendo aquí?

OriginalEl autor ixany | 2014-08-07

6 Comentarios

  1. 9

    En el siguiente ejemplo, he añadido el scrollView en el interface builder, como mi punto de partida.

    Las siguientes obras si su scrollView/textView está vacía o en blanco, O si necesita añadir texto en frente de lo que ya está en el scrollView/textView. Si ya hay texto en el cuadro, el nuevo texto se inserta en la parte delantera del texto existente.

    La documentView es un NSTextView

    Swift 4.0

    @IBOutlet weak var imageDestinationDirectory: NSScrollView!
    
    ...
    
    let destinationText = "Text to display"
    imageDestinationDirectory.documentView!.insertText(destinationText)

    OriginalEl autor Jacksonsox

  2. 6

    Parece que las versiones anteriores de beta (que incluía Swift) de Xcode tenido algunos problemas serios con este tipo de puntos de venta (como se puede ver aquí: http://swiftwtf.tumblr.com/post/88387419568/nstextview). Sin embargo, desde Xcode 6 Beta 6 funciona.

    textFieldOutlet.textStorage.mutableString.setString("Hello w0rld!")

    Para manejar la Cadena, la creación de una salida para la textField en lugar de la scrollView en sí también es una mejor práctica.

    OriginalEl autor ixany

  3. 5

    De Apple tiene un artículo acerca de la configuración de una vista de texto dentro de un desplazamiento de la vista mediante programación. Sistema de texto de la Interfaz de Usuario de la Capa de Guía de Programación: para Poner NSTextView Objeto en un NSScrollView Usted debería leer para mayor comprensión, pero aquí está el código:

    NSScrollView *scrollview = [[NSScrollView alloc] initWithFrame:[[theWindow contentView] frame]];
    NSSize contentSize = [scrollview contentSize];
    
    [scrollview setBorderType:NSNoBorder];
    [scrollview setHasVerticalScroller:YES];
    [scrollview setHasHorizontalScroller:NO];
    [scrollview setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
    
    theTextView = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, contentSize.width, contentSize.height)];
    [theTextView setMinSize:NSMakeSize(0.0, contentSize.height)];
    [theTextView setMaxSize:NSMakeSize(FLT_MAX, FLT_MAX)];
    [theTextView setVerticallyResizable:YES];
    [theTextView setHorizontallyResizable:NO];
    [theTextView setAutoresizingMask:NSViewWidthSizable];
    
    [[theTextView textContainer] setContainerSize:NSMakeSize(contentSize.width, FLT_MAX)];
    [[theTextView textContainer] setWidthTracksTextView:YES];
    [scrollview setDocumentView:theTextView];
    [theWindow setContentView:scrollview];
    [theWindow makeKeyAndOrderFront:nil];
    [theWindow makeFirstResponder:theTextView];

    A continuación, puede establecer el texto de la vista de texto mediante la operación en su textStorage objeto:

    theTextView.textStorage.attributedString = attributedString;

    OriginalEl autor Ken Thomases

  4. 1

    Para NSScrollView:

    @IBOutlet weak var textScroll: NSScrollView!

    Mira esto:

    let text = textScroll.documentView!.textStorage!!
    let attr = NSAttributedString(string: "Hello World")
    
    text.appendAttributedString(attr)

    Esto está muy en el espíritu de @mrtn.lxo solución, sólo se realiza para NSScrollView y es el uso de NSAttributedString.

    OriginalEl autor Maxim Veksler

  5. 1

    Aquí está cómo hacerlo mediante programación, diseño automático:

    class ViewController: NSViewController {
        let scrollView = NSScrollView()
        let textView = NSTextView()
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            textView.maxSize = NSSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude)
            textView.autoresizingMask = .width
            textView.isVerticallyResizable = true
            textView.textContainer?.widthTracksTextView = true
    
            view.addSubview(scrollView)
            scrollView.translatesAutoresizingMaskIntoConstraints = false
            scrollView.documentView = textView
    
            NSLayoutConstraint.activate([
                scrollView.topAnchor.constraint(equalTo: view.topAnchor),
                scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
                scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
                scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
            ])
        }
    }

    OriginalEl autor Alexander Borisenko

Dejar respuesta

Please enter your comment!
Please enter your name here