![]()
Performant MacOS และ iOS TextView พร้อมหมายเลขบรรทัดและอื่น ๆ อีกมากมาย (NSTEXTVIEW/UITEXTVIEW EIMPLEMENTATION)
เป้าหมายของโครงการนี้คือการสร้างส่วนประกอบที่ใช้ซ้ำได้ NstextView/UitextView โดยใช้ Framework TextKit 2 Framework เนื่องจากเหตุผลที่ดีมากมาย
ส่วนประกอบส่วนใหญ่ได้รับการพัฒนาเพื่อตอบสนองความต้องการสตูดิโอ Swift เป็น ตัวแก้ไขซอร์สโค้ด
TextKit 2 ได้รับการประกาศในช่วง WWDC 2021 เพื่อแทนที่ TextKit 1 สำหรับการจัดวางข้อความและอะไรก็ตาม Apple ประกาศว่า NSTextView ซึ่งเป็นส่วนประกอบมุมมองที่เชี่ยวชาญสำหรับการแก้ไขข้อความจะนำ TextKit 2 และให้การสนับสนุนตาม TextKit 1 บิต เมื่อฉันเริ่มเรียนรู้เพิ่มเติมเกี่ยวกับ NSTextView + TextKit2 ฉันก็ตระหนักว่า ณ วันนี้ (ก.พ. 2022) ทั้งคลาส NSTextView และ TextKit 2 ไม่ทำงานอย่างสมบูรณ์ ระหว่างทางฉันรายงานรายงานข้อผิดพลาดหลายฉบับไปยัง Apple ที่ขอ DTS (ตั๋วสนับสนุน) ในที่สุดฉันถูกบล็อกโดยข้อบกพร่องเฉพาะที่ผลักดันให้ฉันเริ่มโครงการนี้
ความยั่งยืนทางการเงินของโครงการเป็นไปได้ด้วยการมีส่วนร่วมอย่างต่อเนื่องจากผู้สนับสนุน GitHub ของเรา
Stextview มีความเหมาะสมอยู่แล้วในฐานะส่วนประกอบตัวแก้ไขข้อความ อย่างไรก็ตามมันยังคงต้องการการปรับปรุงก่อนที่จะเปิดตัว v1.0
แนะนำ หรือ ลงคะแนน สำหรับคุณสมบัติใหม่: คำขอคุณสมบัติ
STTextView จัดจำหน่ายโดยใช้ Swift Package Manager ติดตั้งในโครงการโดยการเพิ่มเป็นการพึ่งพาใน Package.swift ของคุณ Manifest หรือผ่าน“ การพึ่งพาแพ็คเกจ” ในการตั้งค่าโครงการ XCode
let package = Package (
dependencies : [
. package ( url : " https://github.com/krzyzanowskim/STTextView " , from : " 1.0.0 " )
]
) แอปพลิเคชันตัวอย่าง TextEdit และ TextEdit.swiftui ช่วยให้คุณสำรวจห้องสมุด
ปลั๊กอินในส่วนประกอบ sttextview เสนอฟังก์ชันเพิ่มเติมและการปรับแต่งนอกเหนือจากการแสดงข้อความอย่างง่าย พวกเขาเพิ่มความสามารถหลักของมุมมองข้อความโดยการเพิ่มคุณสมบัติเช่นการเน้นไวยากรณ์การติดตามการนับจำนวนคำและอื่น ๆ ปลั๊กอินเหล่านี้ขยายยูทิลิตี้ของ STTextView ในขณะที่ยังคงโครงสร้างซอฟต์แวร์แบบแยกส่วนและปรับเปลี่ยนได้
TextView เป็นมุมมอง Swiftui ที่ห่อหุ้ม StextView
import STTextViewSwiftUI
struct ContentView : View {
@ State private var text = AttributedString ( " Hello World! " )
@ State private var selection : NSRange ?
var body : some View {
TextView (
text : $text ,
selection : $selection ,
options : [ . wrapLines , . highlightSelectedLine ] ,
plugins : [ plugin1 ( ) , plugin2 ( ) ]
)
. textViewFont ( . preferredFont ( forTextStyle : . body ) )
}
} STTextView เป็นคลาสย่อย NSView และสามารถเริ่มต้นได้เช่นเดียวกับมุมมองอื่น ๆ มันมี API ที่คล้ายกับของ NstextView
import STTextView
let textView = STTextView ( )
view . addSubview ( textView )(macOS) เพิ่มลงในมุมมองเลื่อน
let textView = STTextView ( )
let scrollView = NSScrollView ( )
scrollView . documentView = textView let scrollView = STTextView . scrollableTextView ( )
let textView = scrollView . documentView as! STTextViewมุมมองข้อความสามารถปรับแต่งได้หลายวิธี
let paragraph = NSParagraphStyle . default . mutableCopy ( ) as! NSMutableParagraphStyle
// Set the line-height to 110%
paragraph . lineHeightMultiple = 1.1
paragraph . defaultTabInterval = 28
// Default Paragraph style
textView . typingAttributes [ . paragraphStyle ] = paragraph
// Set default font
textView . font = NSFont . monospacedSystemFont ( ofSize : 14 , weight : . regular )
// Set default text color
textView . textColor = . textColor
// Set text value
textView . text = " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lobortis sem a vulputate. "
textView . addAttributes ( [ . foregroundColor : NSColor . red ] , range : NSRange ( location : 10 , length : 5 ) )
// Wrap/No wrap lines to editor width
textView . isHorizontallyResizable = true
// Highlight the selected line.
textView . highlightSelectedLine = trueเพิ่มรางน้ำด้วยหมายเลขบรรทัด
textView . showLineNumbers = true
textView . gutterView ? . drawSeparator = true(macOS) เปิดใช้งานอินเทอร์เฟซค้นหาและแทนที่ที่เลือกภายในมุมมองโดยปกติจะเป็นมุมมองเลื่อน
textView . isIncrementalSearchingEnabled = true
textView . textFinder . incrementalSearchingShouldDimContentView = trueรายการของ TextKit 2 ปัญหาและข้อบกพร่องที่เกี่ยวข้องกับ NSTEXTView และกรอบ TextKit ที่ฉันรายงานไปยัง Apple จนถึงตอนนี้:
... ฉันทราบว่ารายการปัญหายังไม่สมบูรณ์ ฉันจัดการกับปัญหาส่วนใหญ่ของปัญหาใน StextView
(คำนำหน้า เซนต์ ย่อมาจาก " s wift s t udio" เพราะ SS ไม่ได้เป็นคำนำหน้าไม่ดีตั้งแต่ปี 1939)
เริ่มหัวข้อการสนทนาใหม่หรือคำขอดึง
ฉันชอบที่จะได้ยินจากคุณ! ติดต่อผ่าน X/Twitter @krzyzanowskim, mastodon @krzyzanowskim @mastodon.social
หากคุณกำลังสร้างแอปพลิเคชันโอเพนซอร์ซภายใต้ใบอนุญาตที่เข้ากันได้กับใบอนุญาต GNU GPL V3 คุณสามารถใช้ STTextView ภายใต้ข้อกำหนดของ GPLV3
รับหนึ่งเริ่มจาก€ 5
หากคุณต้องการใช้ STTextView เพื่อพัฒนาผลิตภัณฑ์และแอพพลิเคชั่นที่ไม่ได้เปิดให้บริการใบอนุญาตเชิงพาณิชย์มีความเหมาะสม ด้วยตัวเลือกนี้ซอร์สโค้ดของคุณจะถูกเก็บไว้เป็นกรรมสิทธิ์ คุณไม่จำเป็นต้องเปลี่ยนซอร์สโค้ดแอปพลิเคชันทั้งหมดเป็นใบอนุญาตโอเพนซอร์ซ ซื้อใบอนุญาตเชิงพาณิชย์ sttextview