من می توانم با استفاده از یک تصویر با UIColor (patteImage: UIImage (با نام: "patte. png")) به پر کردن الگوی نوار متناوب دست پیدا کنم. با این حال، چگونه می توانم به یک پر کردن الگوی نوار متناوب دست پیدا کنم که آن را به صورت برنامه نویسی با چند کد فشرده ساده ترسیم می کند؟در اینجا دو نمونه وجود دارد که می خواهم به آن برسم. سوال
با استفاده از کد، چگونه می توانم UIView را با نوارهای رنگی متناوب با استفاده از Swift پر کنم؟(1) یک الگوی متناوب دو رنگ که از بالا به پایین (90 درجه) اجرا می شود؟(2) یک الگوی متناوب سه رنگ که از بالا چپ به پایین راست (45 درجه) اجرا می شود؟

دنبال کردن user4806509 پرسیده شده Aug 27, 2016 در 14:08 user4806509 user4806509 2, 876 5 5 نشان طلا 37 37 نشان نقره 72 72 نشان برنز رای مخالف؟من یک سوال واضح پرسیدم اوت 27, 2016 در 14:14
رای منفی بیشتر بدون توضیح در نظرات چرا؟آه از خوشی های اینترنت. روز خوبی داشته باشید بازدیدکنندگان رمز و راز :-)
دسامبر 12, 2016 در 7:32 هرکسی که این رای منفی داده است کاملاً عجیب است - باید فقط یک تصادف بوده باشد. جولای 21, 2017 در 0:39 قدرش را بدان، @Fattie! ژوئیه 21, 2017 در 1:00 BTW یک پاسخ عالی دیگر: stackoverflow. com/a/35820837/294884 جولای 21, 2017 در 1:01
3 پاسخ 3
مرتب شده بر اساس: بازنشانی به پیش فرض
برای برنامه من، ایجاد یک الگوی UIColor که می تواند به عنوان رنگ پس زمینه استفاده شود مفیدتر و کارآمدتر بود.
وقتی این را به عنوان یک پسوند به UIColor اضافه کردم، می توانم آن را به راحتی در هر جایی از کدم قرار دهم و همیشه کاملاً پر می شود، حتی با چرخش، کوچک شدن و رشد نماها!
شما از آن به این صورت استفاده می کنید:
view. backgroundColor = UIColor. red. patteStripes() view. backgroundColor = UIColor. red. patteStripes(color2: DarkGray) view. backgroundColor = UIColor. red. patteStripes(color2: تیره خاکستری، ضخامت نوار: 25. 0)
و این زیبایی را دریافت کنید:

این یک پسوند برای UIColor است:
پسوند UIColorUIColor// به پایین حرکت کنید و دوباره context. cgContext. translateBy(x: 0. 0, y: 2. 0 * t) bars. forEach<$0.0.setFill(); $0.1.fill()>> retu UIColor(patteImage: img)>>
اساسا، من یک فضای نقاشی موقت برای یک مستطیل کوچک ایجاد می کنم تا نقاشی شود. من آن را با الگوی رنگ می کنم که در صورت تکرار از همه طرف یکپارچه مطابقت داشته باشد. سپس تصویری از آن می گیرم و به UIColor می گویم که از آن به عنوان الگو استفاده کند.
ترفند من این است که شما باید تصویر الگوی خود را آنقدر بزرگ کنید که هر نوار را دو بار رنگ کنید. به نظر می رسد ضخامت میله * 2 * sqrt (2) است.
من می دانم که ممکن است کمی در مورد سبک مورد ضرب و شتم قرار بگیرم. در اینجا افکار من هستند:
- من از یک متغیرهای حرفی مانند T استفاده کردم که خیلی توصیفی نیست. دفاع من: من فکر می کنم این معادلات را قابل خواندن تر می کند و احساس می کند وقتی فقط به چند خط بعدی محدود می شود ، اشکالی ندارد.
- Tuplesهمان شماره 1
- استفاده از اعشار (4. 0 به جای فقط 4). من ترجیح می دهم از اعشار استفاده نکنم اما با اعشاری زمان کامپایل بهتری پیدا کرده ام. در پروژه های بزرگتر می تواند تفاوت زیادی ایجاد کند. من همچنین اعتراف خواهم کرد که ممکن است به عنوان زیبا نخوانده باشد ، اما کمتر مبهم بودن در مورد نوع حتی می تواند برای انسان مفید باشد.
3 رنگ: من تازه فهمیدم که سوال اصلی درخواست 3 رنگ است ، بنابراین در اینجا نسخه ای برای آن وجود دارد.

پسوند UIColorUIColor// حرکت به پایین و دوباره رنگ. cgcontext. translateby (x: 0. 0 ، y: 3. 0 * t) bars. foreach<$0.0.setFill(); $0.1.fill()>> retu UIColor(patteImage: img)>>
View. BackgroundColor = uicolor. green. patte3stripes (Color2: . white ، Color3: . red ، Barthickness: 25. 0)

دنبال کردن 23 ژوئیه 2021 در ساعت 13:39 پاسخ داد گارفاجون گارافجون 1،258 13 13 نشان نقره 15 15 نشان برنز من فکر نمی کنم که به صفرهای منفی احتیاج داریم ، صفرهای منظم باید کافی باشند. 8 سپتامبر 2021 در 17:55 با تشکر ، aclima ، من موافقم. نمی دانم چرا این کار را کردم. احتمالاً مقادیر دیگری در ابتدا داشته است. 8 سپتامبر 2021 در 21:16
پر کردن منظره با یک الگوی نوار با دو ، سه یا چند نوار رنگی با عرض نوار قابل تنظیم و چرخش با کد زیر قابل دستیابی است. این کد یک الگوی نوار رنگی را نشان می دهد که در تصویر مثال زیر نشان داده شده است.
مراحل:
- کد زیر را برای مشاهده controller. swift اضافه کنید
- یک UIView را به صفحه داستانی اضافه کنید.
- Contstraints Alignment جدید را به UIView در صفحه داستانی اضافه کنید. به صورت افقی در کانتینر = 0 ، به صورت عمودی در ظرف = 0.
- در بازرس هویت ، کلاس UIView Custom را روی "ColorStripesView" تنظیم کنید.
- UIView را در صفحه داستانی به Code Viewpatte Iboutlet وصل کنید.
کد:
//// ViewController. swift //// 1. کد زیر را به ViewController. swift //// اضافه کنید. 2. یک UIVIEW را به صفحه داستانی اضافه کنید.//// 3. کانتینرهای تراز جدید را به UIView در صفحه داستانی اضافه کنید. به صورت افقی در کانتینر = 0 ، به صورت عمودی در کانتینر = 0. //// 4. در بازرس هویت ، کلاس سفارشی UIView را روی "ColorStripesView" تنظیم کنید.//// 5. UIView را در صفحه داستانی به ViewPatte Iboutlet در کد وصل کنید. وارد کردن کلاس Uikit ViewController: UIViewController<@IBOutlet weak var viewPatte: UIView! override func viewDidLoad() نادیده گرفتن عملکرد DIDRECEIVEMEMORYWARING ()>Class ColorStripesView: UIView>
شبیه ساز:

دنبال کردن 29 اوت 2016 در 15:57 پاسخ داد user4806509 user4806509 2, 876 5 5 نشان طلا 37 37 نشان نقره 72 72 نشان برنز
ممکن است شما بتوانید نوارهای خود را با استفاده از یک فیلتر تصویر اصلی ترسیم کنید ، یا می توانید یک زیر کلاس سفارشی UIImage ایجاد کرده و روش DrawRect را پیاده سازی کنید.
ویرایش کردن
با استفاده از cifilter:
من یک پروژه نمونه به نام CifilterTest (Link) در GitHub دارم که به شما امکان می دهد انواع مختلف فیلترهای تصویر اصلی را امتحان کنید. این سیستم را برای لیستی از فیلترهای موجود بازجویی می کند و سپس سعی می کند UI را برای وارد کردن تنظیمات مختلف برای هر فیلتر بسازد. این از برخی از ورودی های خاص تر پشتیبانی نمی کند ، اما به شما امکان می دهد CistripesGenerator را امتحان کنید ، این فیلتر است که نوارهای متناوب را برای شما ایجاد می کند. این برنامه در Objective-C نوشته شده است اما باید ایده کلی را به شما ارائه دهد. توجه داشته باشید که به نظر می رسد که فیلتر cistripesgenerator فقط در 2 رنگ متناوب نوارها ایجاد می کند ، بنابراین شما قادر به استفاده از آن برای مورد 3 رنگ خود نخواهید بود.
با استفاده از DrawRect:
در DrawRect شما می خواهید یک سری از Uibezierpaths ایجاد کنید و آنها را با رنگ های متناوب پر کنید. برای نوارهای عمودی می توانید از روش ساده bezierpathwithrect: init استفاده کنید. برای خطوط مورب ، یا نیاز به ایجاد نوارهای افقی با استفاده از MovetOpoint & LinetOpoint دارید ، یا یک تبدیل چرخش را در مسیرهای مستطیل اعمال کنید.
ویرایش شماره 2:
در اینجا یک کلاس نمونه وجود دارد که 2 مستطیل رنگی را درون خود می کشد:
Class tripedView: UIView>
برای ایجاد یک سری نوارهای تکرار شونده به جای 2 مستطیل ، باید روی کد فوق گسترش دهید و از 3 به جای 2 رنگ استفاده کنید.
چرخش نوارها 45 درجه پیچیده تر است. احتمالاً ساده ترین راه برای انجام این کار ایجاد نوارهای مورب با نقشه برداری از گوشه های هر نوار در امتداد مرزهای نمای و سپس ایجاد یک uibezierpath برای هر نوار با استفاده از MovetOpoint و LinetOpoint است. این فراتر از محدوده یک پست انجمن است.
استراتژی ترید...
ما را در سایت استراتژی ترید دنبال می کنید
برچسب :
نویسنده : مرجان شیرمحمدی
بازدید : 28
تاريخ : پنجشنبه
9 شهريور
1402 ساعت: 18:45