Post

Replies

Boosts

Views

Activity

Duplicated title in swiftui in NavigationView and bug with navigation buttons
Made code for example. If you make an incomplete swipe to the previous view, then in case of scrolling, the text of the editor starts to be duplicated with the title. I checked it even without @Environment, but through isActive, which was transmitted, but still this bug. Also, with an incomplete swipe, the buttons stop working. Could someone know the complete NavigationView tutorial to avoid some bugs? I need the title not to jump and the buttons are fine. struct View1: View { var body: some View { NavigationView { ZStack { Color.red NavigationLink("View 2", destination: View2()) } .navigationBarTitle("Back").navigationBarHidden(true).animation(.default) } } } struct View2: View { @State private var texti: String = "" @Environment(\.presentationMode) var presentationMode var body: some View { ZStack { VStack { TextEditor(text: $texti) .padding().onReceive(texti.publisher.collect()) { self.texti = String($0.prefix(2000))} } } .navigationBarTitle("Your Title") .navigationBarItems(trailing: HStack { Button(action:{}) { Text("Ed").foregroundColor(Color(#colorLiteral(red: 0.3647058824, green: 0.6901960784, blue: 0.4588235294, alpha: 1))) }; Button(action: {}) { Text("S").foregroundColor(Color(#colorLiteral(red: 0.3647058824, green: 0.6901960784, blue: 0.4588235294, alpha: 1))) }}) } }
0
0
855
Mar ’21
SwiftUI Freeze buttons and titles in the NavigationBar
I used transitions through NavigationLink, but with small swipes, the title and buttons in the navigationbartitle and items freeze. What's the trouble? @State private var selection: String? = nil NavigationLink(destination: Help(), tag: "Third", selection: $selection) { EmptyView() } Button(action: {self.selection = "Third"}, label: {                                 Text("Help")} and @State private var isShowingSettings = false NavigationLink(destination: Settings(), isActive: $isShowingSettings) { EmptyView() } .navigationBarItems(trailing: Button(action: {self.isShowingSettings.toggle()}, label: {                     Image(systemName: "gear")}
0
0
589
Mar ’21
Splitting text into cards
Let me explain the idea. Let's say the text and title comes from the Internet. The text takes up more space than one page shown in the gif. How to make automatic generation of cards to fully fit the text, also taking into account the size of the device (that is, smaller phones will have more cards, because there will be fewer cards). Also, the title must appear once on the first card. The last card may be half empty, if that happens. How can such an algorithm be implemented? Please, help me. SwiftUI or UIKit is welcome.
17
0
1.2k
Mar ’21
How do I wrap the viewDidLoad function?
I got the answer to my previous question with this code. How can I use it and put it in the text box? I don't know how this is done. override func viewDidLoad() { super.viewDidLoad() let scrollingView = UIScrollView(frame: CGRect(x: CGFloat(20), y: CGFloat(20), width: CGFloat(view.bounds.size.width - 40), height: CGFloat(view.bounds.size.height - 40))) // we will set the contentSize after determining how many pages get filled with text //scrollingView.contentSize = CGSize(width: CGFloat((view.bounds.size.width - 20) * pageNumber), height: CGFloat(view.bounds.size.height - 20)) scrollingView.isPagingEnabled = true view.addSubview(scrollingView) let textString = "NOW, what I want is, Facts. Teach these boys and girls nothing but Facts. Facts alone are wanted in life. Plant nothing else, and root out everything else. You can only form the minds of reasoning animals upon Facts: nothing else will ever be of any service to them. This is the principle on which I bring up my own children, and this is the principle on which I bring up these children. Stick to Facts, sir!’ The scene was a plain, bare, monotonous vault of a school-room, and the speaker’s square forefinger emphasized his observations by underscoring every sentence with a line on the schoolmaster’s sleeve. The emphasis was helped by the speaker’s square wall of a forehead, which had his eyebrows for its base, while his eyes found commodious cellarage in two dark caves, overshadowed by the wall. The emphasis was helped by the speaker’s mouth, which was wide, thin, and hard set. The emphasis was helped by the speaker’s voice, which was inflexible, dry, and dictatorial. The emphasis was helped by the speaker’s hair, which bristled on the skirts of his bald head, a plantation of firs to keep the wind from its shining surface, all covered with knobs, like the crust of a plum pie, as if the head had scarcely warehouse-room for the hard facts stored inside. The speaker’s obstinate carriage, square coat, square legs, square shoulders,—nay, his very neckcloth, trained to take him by the throat with an unaccommodating grasp, like a stubborn fact, as it was,—all helped the emphasis. ‘In this life, we want nothing but Facts, sir; nothing but Facts!’ The speaker, and the schoolmaster, and the third grown person present, all backed a little, and swept with their eyes the inclined plane of little vessels then and there arranged in order, ready to have imperial gallons of facts poured into them until they were full to the brim." let textStorage = NSTextStorage(string: textString) let textLayout = NSLayoutManager() textStorage.addLayoutManager(textLayout) textLayout.delegate = self var r = CGRect(x: 0, y: 0, width: scrollingView.frame.size.width, height: scrollingView.frame.size.height) var i: Int = 0 // this is what we'll use to track the "progress" of filling the "screens of textviews" // each time through, we'll get the last Glyph rendered... // if it's equal to the total number of Glyphs, we know we're done var lastRenderedGlyph = 0 while lastRenderedGlyph textLayout.numberOfGlyphs { let textContainer = NSTextContainer(size: scrollingView.frame.size) textLayout.addTextContainer(textContainer) let textView = UITextView(frame: r, textContainer: textContainer) r.origin.x += r.width textView.font = .systemFont(ofSize: 25) textView.tag = i i += 1 scrollingView.addSubview(textView) // get the last Glyph rendered into the current textContainer lastRenderedGlyph = NSMaxRange(textLayout.glyphRange(for: textContainer)) } // use the last textView rect to set contentSize scrollingView.contentSize = CGSize(width: r.origin.x, height: r.size.height) print("Actual number of pages =", i) }
4
0
486
Mar ’21