iOS Code Snippet iRichStringExtended

Discussion in 'iOS Code Snippets' started by AndOrNot, Mar 30, 2017.

Similar threads

B4i Library [class] RichString
B4i Library [class] SearchView
B4i Code Snippet CSBuilder text direction
B4A Code Snippet [B4X] [BitmapCreator] Blur Image
B4J Library [B4X] [class] UndoManager
  1. AndOrNot

    AndOrNot Well-Known Member Licensed User

    This is classic b4i RichString, found in forum
    Code:
    'Class module
    Sub Class_Globals
        
    Private s As NativeObject
        
    Private t As String
    End Sub

    Public Sub Initialize (Text As String)
        setText(Text)
    End Sub

    Public Sub getAttributedString As AttributedString
        
    Return s
    End Sub

    'Sets the text color in the given range.
    Public Sub Color (clr As Int, Start As Int, EndIndex As Int) As RichString
        
    Return AddAttribute("NSColor", s.ColorToUIColor(clr), Start, EndIndex)
    End Sub

    Public Sub RelativeSize(newsize As Int,start As Int, endindex As Int)
        SetFont(
    Font.CreateNew(newsize),start,endindex)
    End Sub


    'Sets the background color in the given range.
    Public Sub BackgroundColor (clr As Int, Start As Int, EndIndex As Int) As RichString
        
    Return AddAttribute("NSBackgroundColor", s.ColorToUIColor(clr), Start, EndIndex)
    End Sub
    'Adds or removes a strikethrough effect in the given range.
    Public Sub Strikethrough(Visible As Boolean, Start As Int, EndIndex As Int) As RichString
        
    Return AddAttribute("NSStrikethrough", Visible, Start, EndIndex)
    End Sub
    'Adds or removes an underline effect with the specified color in te given range.
    Public Sub Underline(Visible As Boolean, Clr As Int, Start As Int, EndIndex As Int) As RichString
        AddAttribute(
    "NSUnderline", Visible, Start, EndIndex)
        
    Return AddAttribute("NSUnderlineColor", s.ColorToUIColor(Clr), Start, EndIndex)
    End Sub
    'Sets the font used in the given range.
    'Note that if the Label was added with the designer then the font size will be reset
    'when AutoScaleAll is applied. This means that you need to set it again in Page_Resize event.
    Public Sub SetFont(fnt As Font, Start As Int, EndIndex As Int) As RichString
        
    Return AddAttribute("NSFont", fnt, Start, EndIndex)
    End Sub
    'Sets the attributed string to the label.
    Public Sub SetToLabel(lbl As Label)
        
    Dim no As NativeObject = lbl
        no.SetField(
    "attributedText", s)
    End Sub
    'Returns the text.
    Public Sub getText As String
        
    Return t
    End Sub

    Public Sub setText(text As String)
        s = s.Initialize(
    "NSMutableAttributedString").RunMethod("alloc"Null) _
            .RunMethod(
    "initWithString:"Array(text))
        t = text
    End Sub

    Private Sub AddAttribute(attr As String, value As Object, Start As Int, EndIndex As Int) As RichString
        s.RunMethod(
    "addAttribute:value:range:"Array(attr, value, _
            s.MakeRange(Start, EndIndex - Start)))
        
    Return Me
    End Sub
    I'm working to extend this class to obtain a "b4a's like richstring", so i will use this thread to post my small sub.


    Code:
    'Sets the text color in the given range.
    Public Sub Color2 (clr As Int, meta As StringAs RichString
       
        
    Dim start As Int = t.IndexOf(meta)
        t = t.SubString2(
    0,start)&t.SubString(start+meta.Length)
       
        
    Dim EndIndex As Int = t.IndexOf(meta)
        t = t.SubString2(
    0,EndIndex)&t.SubString(EndIndex+meta.Length)
        setText(t)
        
    Return AddAttribute("NSColor", s.ColorToUIColor(clr),start , EndIndex)
    End Sub
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice