![]()
أداء MacOS و iOS TextView مع أرقام الأسطر وأكثر من ذلك بكثير. (NSTEXTVIEW/UITEXTVIEW إعادة تنفيذ)
الهدف من هذا المشروع هو بناء مكون NSTEXTVIEW/UITEXTVIEW القابل لإعادة الاستخدام باستخدام إطار عمل TextKit 2. بسبب العديد من الأسباب الجيدة.
تم تطوير المكون بشكل أساسي لخدمة احتياجات Swift Studio كمحرر رمز المصدر .
تم الإعلان عن Textkit 2 خلال WWDC 2021 كبديل TextKit 1 لتخطيط النص وما إلى ذلك. أعلنت شركة Apple أن NSTextView ، مكون العرض المتخصص لتحرير النص ، سيعتمد Textkit 2 ويقدم الدعم على طول Textkit 1 بت. عندما بدأت في معرفة المزيد حول NSTextView + TextKit2 ، أدركت أنه اعتبارًا من اليوم (فبراير 2022) ، لا تعمل فئات NSTextView أو Textkit 2 بشكل كامل. على طول الطريق ، أبلغت عن العديد من تقارير الأخطاء إلى Apple التي تطلب DTS (تذاكر الدعم). في نهاية المطاف ، تم حظرها بواسطة الأخطاء المحددة التي دفعتني لبدء هذا المشروع.
الاستدامة المالية للمشروع ممكنة بفضل المساهمات المستمرة من رعاة Github
SttextView مناسب بالفعل كمكون محرر نصوص. ومع ذلك ، فإنه لا يزال يحتاج إلى تحسينات قبل إصدار V1.0
اقترح أو التصويت لميزات جديدة: طلبات الميزات
يتم توزيع STTextView باستخدام Swift Package Manager. قم بتثبيته في مشروع عن طريق إضافته كاعتماد في Package.swift الخاصة بك.
let package = Package (
dependencies : [
. package ( url : " https://github.com/krzyzanowskim/STTextView " , from : " 1.0.0 " )
]
) يتيح لك التطبيقات التجريبية textedit و textedit.swiftui استكشاف المكتبة.
توفر المكونات الإضافية في مكون SttextView وظائف وتخصيصات إضافية تتجاوز شاشة النص البسيطة. إنها تعزز القدرات الأساسية لعرض النص عن طريق إضافة ميزات مثل تسليط الضوء على بناء الجملة ، وتتبع عدد الكلمات ، والمزيد. توسع هذه المكونات الإضافية الأداة المساعدة لـ SttextView مع الحفاظ على بنية برمجية معيارية وقابلة للتكيف.
The TextView عبارة عن طريقة عرض Swiftui التي تلتف sttextView.
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 ويمكن تهيئتها مثل أي طريقة عرض أخرى. إنه يحتوي على واجهة برمجة تطبيقات تشبه تلك الخاصة بـ 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 حتى الآن:
... أنا أدرك أن قائمة القضايا غير كاملة. تمكنت من حل معظم المشاكل في sttextview.
( ST Prefix تعني " S wift s t udio" لأن SS ليس بادئة جيدة منذ عام 1939)
ابدأ موضوع مناقشة جديد أو طلب سحب.
أحب أن أسمع منك! تواصل عبر X/TwitterKrzyzanowskim ، mastodon @krzyzanowskim @mastodon.social.
إذا كنت تقوم بإنشاء تطبيق مفتوح المصدر بموجب ترخيص متوافق مع ترخيص GNU GPL V3 ، فيمكنك استخدام SttextView بموجب شروط GPLV3.
احصل على واحدة تبدأ من 5 يورو.
إذا كنت ترغب في استخدام SttextView لتطوير المنتجات والتطبيقات غير المفتوحة ، فإن الترخيص التجاري مناسب. مع هذا الخيار ، يتم الاحتفاظ برمز المصدر الخاص بك الملكية. لن تضطر إلى تغيير رمز مصدر التطبيق بالكامل إلى ترخيص مفتوح المصدر. شراء رخصة تجارية SttextView