XML tags are often used to generate styled text on web pages. For example, cascading style sheets (CSS) are used to style webpages in order to make them look pretty and provide a consistent look and feel. CSS is used by a web designer to style webpages in such a way that they are consistent and look good. But since the web is evolving very quickly, we are stuck with the old way of styling webpages, which is to use XML tags like div or p to specify which CSS styling rules to apply to a given element.
In this article, I’ll teach you to generate styled text from XML tags. You can create your own custom text styles to freely adjust your UI’s font styles. You can even create your own XML tags to generate your own custom text styles.
While working with SwiftUI text elements, it’s sometimes necessary to generate a text string from the element content. You can accomplish this using the UILabel class’s text property, which generates a string based on the label’s current contents. However, if the content is in an XML tag, the resulting string won’t be styled consistently across the system.
XMLText
XMLText is a mini library that generates SwiftUI text from a given XML tagged string. It uses the + text operator to compose the final result. Text( xmlString : my localized and formatted string, styleGroup : myStyleDefinitions ) The original idea came directly from Daniele Margutti’s SwiftRichString library on GitHub. The code to parse XML, StyleProtocol and StyleGroup is taken from this library, with minor modifications to make SwiftUI Text instead of NSAttributedString. This is very useful for locating styled string applications without having to know the location of the strings in the code to be styled. This is a pretty good alternative to using NSAttributedString with UIViewRepresentable UILabel in a SwiftUI application, since the UIViewRepresentable markup for dynamic views like UILabel doesn’t always work and is prone to errors when combined with other SwiftUI views.
Examples
iOS 14.0 / macOS 11.0 / tvOS 14.0
Text Modifiers Supported
font(SwiftUI.Font)
Foreground color(Colour)
crossed out (colour)
Underscore (color)
Crenation(CGFloat)
follow-up(CGFloat)
BaselineOffset(CGFloat)
Duty model
Here is an example of the XML strings that will appear in your Localizable.strings files, with the words for each language in a different order, i.e. English and Swedish in this example. If you are not familiar with this approach, note that style information (such as StyleGroup keys) is also contained in localized strings. // This goes to English Localizable.strings let englishXML = %[email protected] %[email protected] // This goes into the Swedish Localizable.strings lets swedishXML = %[email protected] %[email protected] let normalStyle = Style { style in style.font = .subheadline style.foregroundColor = .red } let italicStyle = Style { style in style.font = Font.italic(.system(size : 20))() style.foregroundColor = .blue } let styleGroup = StyleGroup( base : normalStyle, [italicStyle : italicStyle] ) Text( xmlString : String(format : englishXML, Director, Martin), styleGroup : styleGroup ) Text( xmlString : String(format : swedishXML, Director, Martin), styleGroup : styleGroup )
References (not supported)
Currently, SwiftUI does not allow other display elements (e.g., a button) to be merged with text elements using the + operator. Adding gesture recognition to pieces of text using the + operator is also not supported because gesture recognition modifiers return an opaque display type, meaning it is no longer text and cannot be added to other text. If you have only one reference in a particular paragraph or sentence, you can avoid using touch screen recognition on the entire paragraph or sentence generated by the XMLText library. If you have multiple references in one sentence or paragraph, good luck with NSAttributedString and UIViewRepresentable from UITextView. āļø
Images (not supported)
As for links, SwiftUI does not currently allow image and text elements to be combined using the + operator.
XML custom attributes (not supported)
For example: This feature is not currently supported, for reasons of simplicity and because the library does not have enough functionality to make it worthwhile. If use cases arise in this context, an approach similar to the XMLDynamicAttributesResolver in the SwiftRichString library may be considered in the future.
GitHub
https://github.com/cocoatoucher/XMLTextText in your app can be a pain if you don’t have an elegant way to display it. That’s why I created a framework called SwiftUI, which makes it easy to generate styled text from your strings, and has been used in several apps including the iOS and Android versions of the blog.. Read more about nsattributedstring and let us know what you think.
Related Tags:
swiftui attributed string linkswiftui text to stringswiftui attributed string htmlnsattributedstringswiftui html textswift bold text in string,People also search for,Privacy settings,How Search works,swiftui attributed string link,swiftui text to string,swiftui attributed string html,nsattributedstring,swiftui html text,swift bold text in string,change font of attributed string: swift,nsattributedstring builder