আমার কাছে কোডের নিম্নলিখিত সেট রয়েছে:
কাস্টমভিউ
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface CustomView : UIView
@property (nonatomic) IBInspectable UIColor *borderColor;
@property (nonatomic) IBInspectable CGFloat borderWidth;
@property (nonatomic) IBInspectable CGFloat cornerRadius;
@end
কাস্টমভিউ.এম
#import "CustomView.h"
@implementation CustomView
- (void)setBorderColor:(UIColor *)borderColor {
_borderColor = borderColor;
self.layer.borderColor = borderColor.CGColor;
}
- (void)setBorderWidth:(CGFloat)borderWidth {
_borderWidth = borderWidth;
self.layer.borderWidth = borderWidth;
}
- (void)setCornerRadius:(CGFloat)cornerRadius {
_cornerRadius = cornerRadius;
self.layer.cornerRadius = cornerRadius;
}
@end
(সুইফ্ট রেফারেন্সের জন্য, এই সমস্যাটি সুইফ্ট কোড সহও ঘটছিল)
কাস্টমভিউ.সুইফ্ট
@IBDesignable
class CustomView : UIView {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
@IBInspectable var borderColor : UIColor = UIColor.clearColor() {
didSet {
self.layer.borderColor = borderColor.CGColor
}
}
@IBInspectable var borderWidth : CGFloat = 0.0 {
didSet {
self.layer.borderWidth = borderWidth
}
}
@IBInspectable var cornerRadius : CGFloat = 0.0 {
didSet {
self.layer.cornerRadius = cornerRadius
}
}
}
আমি UIView
স্টোরিবোর্ডে একটি ভিউ কন্ট্রোলারে একটি যুক্ত করেছি এবং এর সাবক্লাসে সেট করেছি CustomView
।
এটি "ডিজাইনযোগ্য" সারি যুক্ত করে। এটি "আপডেটিং" এ আটকে গেছে এবং টুলটিপটি "টার্গেট বিল্ডিংয়ের জন্য অপেক্ষা করছে" বলে। এটি এই অবস্থা থেকে কখনই পরিবর্তন হয় না।
যখন আমি পরিদর্শন করা বৈশিষ্ট্যগুলিতে চলে যাই তখন আমি এই IBInspectable
বৈশিষ্ট্যগুলি সেট করতে সক্ষম হয়েছি :
এবং একবার সেট হয়ে গেলে তারা "ব্যবহারকারীর সংজ্ঞায়িত রানটাইম বৈশিষ্ট্যগুলি" তে প্রদর্শিত হবে:
যাইহোক, "ডিজাইনযোগ্য" স্থিতিটি এখনও একই সরঞ্জামদণ্ডের সাথে "আপডেটিং" এর বাইরে চলে না (আমি বেশ কয়েকবার সিএমডি + বি বিল্ডিং চেষ্টা করেছি, কিছুই পরিবর্তন হয়নি)।
তদুপরি, আমি IBInspectable
বৈশিষ্ট্যগুলি সেট করার সাথে সাথে আমি প্রত্যেকের জন্য একটি সতর্কতা পাই
আইবিডিজিনেবলস - "ইউআইভিউ" এর উদাহরণ হিসাবে "বর্ডার কালার" কী পথটির জন্য ব্যবহারকারী নির্ধারিত রানটাইম বৈশিষ্ট্যটিকে উপেক্ষা করে ... এই শ্রেণিটি মূল সীমানার রঙের কোডের জন্য মূল-মান কোডিং-সম্মতিযুক্ত নয়।
উত্পন্ন সতর্কতার স্ক্রিনশট:
আমি মূল-মান কোডিং-অনুবর্তী সমস্যাগুলির সাথে পরিচিত এবং সাধারণত তাদের কীভাবে সমাধান করতে হয় তা আমি জানি ... তবে কীভাবে এই সমস্যাটি এখানে সমাধান করা যায় তা আমি বুঝতে পারি না। ভিউটির পরিচয় পরিদর্শক অনুসারে, ভিউটি একটি "কাস্টমভিউ" (নিয়মিত "ইউআইভিউ" নয়, যার মধ্যে এই বৈশিষ্ট্যগুলি নেই)। এবং যদি ভিউটি "কাস্টমভিউ" না হয় তবে এই নকশাযোগ্য বৈশিষ্ট্যগুলি অ্যাট্রিবিউটস ইন্সপেক্টরটিতে প্রদর্শিত হবে না, তাই না? কিন্তু যখন ইন্টারফেস বিল্ডার এই বৈশিষ্ট্যগুলিকে দর্শনে প্রয়োগ করার চেষ্টা করেন, তখন দর্শকের শ্রেণিটি "ইউআইভিউ" হয় এবং এই বৈশিষ্ট্যগুলি প্রয়োগ করতে পারে না তা ভেবে ফিরে যায়।
কোন সাহায্য? আমি কিছু গুরুত্বপূর্ণ বিবরণ রেখে গেছি কিনা দয়া করে আমাকে জানান, তবে এটির মূল্য কী, আমি এই টিউটোরিয়ালটি ঠিক অনুসরণ করেছি (ওবিজিস বনাম সুইফট ব্যতীত)। এটিও লক্ষণীয় যে আমি এই টিউটোরিয়ালটি ঠিক অন্য একটি মেশিনে অনুসরণ করেছি এবং এটি একটি কবজির মতো কাজ করেছে (আমি গত রাতে এই পোস্টটি তৈরি করার ইচ্ছা নিয়েছিলাম তবে আমি যে কম্পিউটারে ছিলাম তখন এই সমস্যাটি ছিল না)।
মন্তব্যের ভিত্তিতে, এটি প্রস্তাবিত হয়েছে যে সম্ভবত .m
ফাইলটি অন্তর্ভুক্ত করা হয়নি এবং এটি সমস্যার কারণ হতে পারে। আমি ভেবেছিলাম অবশ্যই এই দৃশ্যটি হওয়ার জন্য আমি আমার পথ থেকে দূরে চলে যাব, তবে আমি যাইহোক পরীক্ষা করেছি।
যখন আমি প্রথম এটি করার চেষ্টা শুরু করি তখন আমি বুঝতে পেরেছিলাম যে IB_DESIGNABLE
ক্লাসগুলি একটি আলাদা UIKit
কাঠামোর অংশ হতে হয়েছিল । সুতরাং এই প্রথম স্ক্রিনশট থেকে আপনি দেখতে পাচ্ছেন যে আমি একটি "কাস্টমভিউস" ফ্রেমওয়ার্ক সেটআপ করেছি, যার একটি শ্রেণি রয়েছে CustomView
,। আপনি এখানে দেখতে পাবেন যে আমি একটিও তৈরি করেছি OtherView
, যা এর অনুরূপCustomView
একটি আলাদা কাঠামোতে না বাদেউভয় শ্রেণির মধ্যে স্টোরিবোর্ডে অভিন্ন সমস্যাটি স্থির রয়েছে।
এখানে আমাদের একটি স্ক্রিনশট রয়েছে যা ইঙ্গিত করে যে ফ্রেমওয়ার্কটি CustomView.m
দিয়ে নির্মিত হবে CustomViews
:
এদিকে, নিম্নলিখিত স্ক্রিনশটটি বেশ কয়েকটি বিষয় নির্দেশ করে:
CustomViews.framework
যথাযথভাবে মূল প্রকল্পের অন্তর্ভুক্ত।OtherView.m
একটি সংকলন উত্স হিসাবে অন্তর্ভুক্ত করা হয়েছে, তাই কিছু ভুল হলেওCustomView
,OtherView
কাজ করা উচিত, যদিও তা অভিন্ন ত্রুটি জেনারেট করে।Main.storyboard
এবংLaunchScreen.xib
লাল হিসাবে প্রদর্শিত হচ্ছে। আমি বুঝতে পারি না কেন, এবং কেনLaunchScreen.xib
হওয়া উচিত তা সম্পর্কে আমি সামান্যতম ধারণাও পাইনি (যদিও আমি এই ফাইলটি স্পর্শ করি নি), যদিও আমি অন্যান্য প্রকল্পগুলি দেখার পরে বলতে পারি,Main.storyboard
সেই প্রকল্পগুলির জন্যও লাল দেখায়, এবং আমি সাথেIB_DESIGNABLE
বাIBInspectable
সেখানে কিছুই করছেন না ।
আমি এখন বেশ কয়েকবার চেষ্টা করেছি এবং আবার চেষ্টা করেছি। এটি ঘরে বসে আমার কম্পিউটারে প্রতিটি সময় কাজ করে - আমি বাড়িতে এই প্রশ্নটিতে বর্ণিত সমস্যাটি পুনরুত্পাদন করতে পারি না। কর্মক্ষেত্রে, এটি কখনও কাজ করে না। এই প্রশ্নের বর্ণিত সমস্যাটি প্রতিবারই ঘটে।
উভয় কম্পিউটারই হ'ল ম্যাক মিনিস এই বছর নতুন কিনেছে (নতুন মডেল নয়, দেরী ২০১২ মডেল)। উভয় কম্পিউটারই ওএস এক্স ইয়োসেমাইট 10.10 চলছে। উভয় কম্পিউটারেই এক্সকোড সংস্করণ 6.1 চলছে। বাড়িতে, বিল্ডটি (6A1052 ডি)। আজ সকালে, আমি নিশ্চিত করতে পারি যে উভয় কম্পিউটারই এক্সকোডের অভিন্ন বিল্ডগুলি চালাচ্ছে।
অন্যরা আমাকে পরামর্শ দিয়েছে এটি খারাপ র্যাম হতে পারে। এটা আমার কাছে অনেকটা মনে হয়েছে। আমি প্রকল্পটি একাধিকবার পুনরায় চালু করেছি, একাধিকবার কম্পিউটার পুনরায় চালু করেছি। আমার কাছে মনে হয় যদি প্রায় 6 মাস বয়সী কম্পিউটারে খারাপ র্যাম থাকে তবে আমি অন্যান্য সমস্যাগুলি দেখছিলাম এবং এই সমস্যাটি কম সামঞ্জস্যপূর্ণ হবে। তবে কম্পিউটারে স্ক্র্যাচ থেকে পুরো প্রকল্পটি পুনরায় আরম্ভ করার পরে অসংখ্যবার পুনরায় চালু করা সত্ত্বেও এই সঠিক সমস্যাটি থেকেই যায়।
এটি লক্ষণীয় হওয়া উচিত যে আমি যদি এই প্রকল্পটি সত্যই সংকলন ও পরিচালনা করি তবে কাস্টম ভিউটি দিয়ে with IBInspectable
করি তবে স্টোরিবোর্ডটি এটি প্রদর্শিত হবে বলে প্রত্যাশাগুলির বাস্তবে প্রদর্শিত হয়। আমি ধারণা করি যে এমনকি এটির নির্দেশিকা IB_DESIGNABLE
এবং IBInspectable
নির্দেশাবলী সত্ত্বেও এটি হবে কারণ এটি ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য হিসাবে তৈরি করা হয়েছে।