প্রথমত, আপনার কোনও নতুন স্ক্রিন ফিট করার জন্য আপনার সমস্ত দৃষ্টিভঙ্গি পুনর্নির্মাণ করা উচিত নয়, বা বিভিন্ন স্ক্রিনের আকারের জন্য আলাদা আলাদা ভিউ ব্যবহার করা উচিত নয়।
আইওএসের স্বতঃ-পুনরায় আকার দেওয়ার ক্ষমতাগুলি ব্যবহার করুন , যাতে আপনার মতামতগুলি কোনও স্ক্রিনের আকারকে সামঞ্জস্য করতে এবং মানিয়ে নিতে পারে।
এটি খুব কঠিন নয়, সে সম্পর্কে কিছু ডকুমেন্টেশন পড়ুন । এটি আপনার অনেক সময় সাশ্রয় করবে।
আইওএস 6 এ সম্পর্কে নতুন বৈশিষ্ট্যও সরবরাহ করে। অ্যাপল বিকাশকারী ওয়েবসাইটে আইওএস 6 এপিআই চেঞ্জলগটি
নিশ্চিত করে পড়ুন ।
এবং নতুন আইওএস 6 অটোলআউট ক্ষমতা পরীক্ষা করে দেখুন ।
এটি বলেছিল, আপনার যদি সত্যিই আইফোন 5 সনাক্ত করতে হবে তবে আপনি কেবল পর্দার আকারের উপর নির্ভর করতে পারেন ।
[ [ UIScreen mainScreen ] bounds ].size.height
আইফোন 5 এর স্ক্রিনটির উচ্চতা 568 রয়েছে। এগুলি
সরল করতে আপনি কোনও ম্যাক্রো কল্পনা করতে পারেন:
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
fabs
H2CO3- এর মন্তব্যে নির্দেশিত হিসাবে ভাসমান পয়েন্টগুলির সাথে তুলনা করার সময়, যথাযথ ত্রুটিগুলি রোধ করার জন্য এপসিলনের সাথে ব্যবহার এখানে রয়েছে।
সুতরাং এখন থেকে আপনি স্ট্যান্ডার্ড ব্যবহার করতে পারেন যদি / অন্য বিবৃতি:
if( IS_IPHONE_5 )
{}
else
{}
সম্পাদনা করুন - ভাল সনাক্তকরণ
কিছু লোকের বক্তব্য অনুসারে, এটি কেবল একটি ওয়াইডস্ক্রিন সনাক্ত করে , আসল আইফোন 5 নয়।
আইপড টাচের পরবর্তী সংস্করণগুলিতেও সম্ভবত এ জাতীয় স্ক্রিন থাকবে, তাই আমরা ম্যাক্রোগুলির আরও একটি সেট ব্যবহার করতে পারি।
আসল ম্যাক্রোর নতুন নামকরণ করা যাক IS_WIDESCREEN
:
#define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
এবং আসুন মডেল সনাক্তকরণ ম্যাক্রোগুলি যুক্ত করুন:
#define IS_IPHONE ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] )
#define IS_IPOD ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPod touch" ] )
এইভাবে, আমরা নিশ্চিত করতে পারি যে আমাদের কাছে একটি আইফোন মডেল এবং প্রশস্ত স্ক্রিন রয়েছে এবং আমরা IS_IPHONE_5
ম্যাক্রোর নতুন সংজ্ঞা দিতে পারি :
#define IS_IPHONE_5 ( IS_IPHONE && IS_WIDESCREEN )
এছাড়াও মনে রাখবেন যে @ লার্নো কোকোস 2 ডি-এর বক্তব্য অনুসারে, আইফোন 5 স্ক্রিনের জন্য অ্যাপ্লিকেশনটি অপ্টিমাইজ করা না হলে (ডিফল্ট-568h@2x.png চিত্র অনুপস্থিত) এই ম্যাক্রোগুলি কাজ করবে না, কারণ এর মধ্যে পর্দার আকার 320x480 হবে একটি মামলা.
আমি মনে করি না এটি একটি সমস্যা হতে পারে, কারণ আমি দেখতে পাই না যে আমরা কেন একটি অপ্টিমাইটিজড অ্যাপ্লিকেশনটিতে আইফোন 5 সনাক্ত করতে চাই।
গুরুত্বপূর্ণ - আইওএস 8 সমর্থন
আইওএস 8-এ, শ্রেণীর bounds
সম্পত্তি UIScreen
এখন ডিভাইস অভিযোজন প্রতিফলিত করে ।
স্পষ্টতই, পূর্ববর্তী কোডটি বাক্সটির বাইরে কাজ করবে না।
এটি ঠিক করার জন্য, আপনি কেবল নতুন nativeBounds
সম্পত্তিটি পরিবর্তে ব্যবহার করতে পারেন bounds
, কারণ এটি অভিমুখীকরণের সাথে পরিবর্তিত হবে না এবং এটি কোনও প্রতিকৃতি-মোডের উপর ভিত্তি করে।
নোট করুন যে মাত্রাগুলি nativeBounds
পিক্সেল পরিমাপ করা হয়, সুতরাং একটি আইফোন 5 এর জন্য উচ্চতা 568 এর পরিবর্তে 1136 হবে।
আপনি যদি আইওএস 7 বা তারও কম লক্ষ্যবস্তু হন তবে বৈশিষ্ট্য শনাক্তকরণটি ব্যবহারের বিষয়ে নিশ্চিত হন, যেমন nativeBounds
আইওএস 8 এর পূর্বে কল করা আপনার অ্যাপ্লিকেশনটি ক্র্যাশ করবে:
if( [ [ UIScreen mainScreen ] respondsToSelector: @selector( nativeBounds ) ] )
{
/* Detect using nativeBounds - iOS 8 and greater */
}
else
{
/* Detect using bounds - iOS 7 and lower */
}
আপনি নিম্নলিখিত ম্যাক্রোগুলি নিম্নলিখিত উপায়ে মানিয়ে নিতে পারেন:
#define IS_WIDESCREEN_IOS7 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
#define IS_WIDESCREEN_IOS8 ( fabs( ( double )[ [ UIScreen mainScreen ] nativeBounds ].size.height - ( double )1136 ) < DBL_EPSILON )
#define IS_WIDESCREEN ( ( [ [ UIScreen mainScreen ] respondsToSelector: @selector( nativeBounds ) ] ) ? IS_WIDESCREEN_IOS8 : IS_WIDESCREEN_IOS7 )
এবং স্পষ্টতই, যদি আপনার কোনও আইফোন 6 বা 6 প্লাস সনাক্ত করতে হয় তবে সংশ্লিষ্ট পর্দার আকার ব্যবহার করুন।