ইউআইভিউয়ের ফ্রেম, সীমানা, কেন্দ্র, উত্স কখন ব্যবহার করবেন?


195

UIViewবৈশিষ্ট্য আছে frame, bounds, center, এবং origin, এবং তারা সব পারস্পরিক সম্পর্কযুক্ত বলে মনে হচ্ছে। বেশিরভাগ সময়, আমি frameক এর অবস্থান এবং আকার নির্ধারণের সময় লেনদেন করি UIView। আমি বুঝতে পারি যে frameবিশ্বব্যাপী সমন্বয় ব্যবস্থা boundsব্যবহার করছে এবং স্থানীয় দর্শনের স্থানাঙ্ক ব্যবহার করছে (সুতরাং এর x এবং y 0 হয় তবে সর্বদা হয় না) তবে কী ব্যবহার করবেন তা আমার কাছে এখনও বিভ্রান্তিকর।

কোন প্রসঙ্গে অধীনে অন্যান্য বৈশিষ্ট্যাবলী ((এবং কি অধিকার সময়) bounds, center, origin) ব্যবহার করা উচিত?


নীচের লিঙ্কটি সেরা উত্তর আছে। stackoverflow.com/questions/5361369/...
Ohmy

ছবির সঙ্গে ফ্রেম বনাম সীমার: stackoverflow.com/a/28917673/3681880
Suragch

উত্তর:


240

উপরোক্ত মার্কোর উত্তর সঠিক, তবে কেবল "কী প্রসঙ্গে" এই প্রশ্নটি প্রসারিত করার জন্য ...

ফ্রেম - এটি এমন সম্পত্তি যা আপনি প্রায়শই সাধারণ আইফোন অ্যাপ্লিকেশনগুলির জন্য ব্যবহার করেন। বেশিরভাগ নিয়ন্ত্রণগুলি "সমন্বিত" নিয়ন্ত্রণের সাথে সামঞ্জস্য করা হবে যাতে ফ্রেম.রিগিন কন্ট্রোলটি যেখানে প্রদর্শিত হবে তার সাথে সরাসরি মিলিত হবে এবং ফ্রেম.সাইজ নির্ধারণ করবে নিয়ন্ত্রণটি কত বড় করতে হবে।

কেন্দ্র - এটি সেই সম্পত্তি যা আপনি সম্ভবত স্প্রিট ভিত্তিক গেম এবং অ্যানিমেশনগুলির জন্য ফোকাস করবেন যেখানে আন্দোলন বা স্কেলিং ঘটতে পারে। ডিফল্টরূপে অ্যানিমেশন এবং রোটেশনটি ইউআইভিউয়ের কেন্দ্রের ভিত্তিতে তৈরি হবে। ফ্রেম সম্পত্তি দ্বারা এই জাতীয় বস্তু চেষ্টা এবং পরিচালনা করা খুব কমই বোধগম্য হয়।

সীমানা - এই সম্পত্তিটি কোনও অবস্থানের সম্পত্তি নয়, তবে ইউআইভিউয়ের আঁকানোর ক্ষেত্রটি ফ্রেমের সাথে "আপেক্ষিক" হিসাবে সংজ্ঞায়িত করে। ডিফল্টরূপে এই সম্পত্তিটি সাধারণত (0, 0, প্রস্থ , উচ্চতা ) হয়। এই সম্পত্তিটি পরিবর্তন করা আপনাকে ফ্রেমের বাইরে আঁকতে বা ফ্রেমের অভ্যন্তরে ছোট অঞ্চলে অঙ্কন সীমাবদ্ধ করতে দেয়। এটির একটি ভাল আলোচনা নীচের লিঙ্কে পাওয়া যাবে। অঙ্কনের অঞ্চলটি সামঞ্জস্য করার নির্দিষ্ট প্রয়োজন না হলে এই সম্পত্তিটি হেরফের করা অস্বাভাবিক। একমাত্র ব্যতিক্রম হ'ল বেশিরভাগ প্রোগ্রামগুলি [[UIScreen mainScreen] bounds]অ্যাপ্লিকেশনের দৃশ্যমান অঞ্চলটি নির্ধারণ করতে স্টার্টআপটি ব্যবহার করবে এবং সে অনুযায়ী তাদের প্রাথমিক ইউআইভিউয়ের ফ্রেম সেটআপ করবে।

ইউআইভিউতে কেন একটি ফ্রেম আয়তক্ষেত্র এবং একটি সীমানা আয়তক্ষেত্র আছে?

আশা করা যায় এটি প্রতিটি সম্পত্তি কোথায় ব্যবহৃত হতে পারে তা পরিষ্কার করতে সহায়তা করে।


33
আমি মনে করি এটি যুক্তিযুক্ত যে এটি boundsসাধারণত ব্যবহৃত হয় যখন কোনও দৃশ্যের সাথে এটির রূপান্তর প্রয়োগ হয়। এই পরিস্থিতিতে frameসম্পত্তি অনির্ধারিত হয়। অন্যান্য উত্তরের দ্বারা নির্দেশিত হিসাবে, সংশোধন করা centerএবং boundsযথাক্রমে দেখার অবস্থান এবং আকারকে সংশোধন করার সমতুল্য।
স্টুয়ার্ট

36

এগুলি সম্পর্কিত মানগুলি, এবং সম্পত্তি সেটার / গেটর পদ্ধতিগুলির দ্বারা সামঞ্জস্য রাখা এবং (এবং ফ্রেমটি একটি খাঁটি সংশ্লেষযুক্ত মান, প্রকৃত উদাহরণ পরিবর্তনশীল দ্বারা ব্যাকড নয় এমনটি ব্যবহার করে)।

প্রধান সমীকরণগুলি হ'ল:

frame.origin = center - bounds.size / 2

(যা একই রকম)

center = frame.origin + bounds.size / 2

(এবং এছাড়াও আছে)

frame.size = bounds.size

এটি কোড নয়, তিনটি বৈশিষ্ট্যের মধ্যে আক্রমণকারীটি প্রকাশ করার জন্য কেবল সমীকরণ। এই সমীকরণগুলিও আপনার ধারণার রূপান্তরকে ধরে নিয়েছে এটি হ'ল পরিচয় which যদি এটি না হয় তবে সীমানা এবং কেন্দ্র একই অর্থ রাখে তবে ফ্রেম পরিবর্তন হতে পারে। যদি আপনি অ-ডান-কোণের আবর্তন না করেন তবে ফ্রেমটি সর্বদা তত্ত্বাবধানের স্থানাঙ্কের ক্ষেত্রে রূপান্তরিত দৃষ্টিভঙ্গি হয়ে থাকবে।

এই স্টাফগুলি এখানে সমস্ত দরকারী মিনি-গ্রন্থাগার দিয়ে আরও বিশদে ব্যাখ্যা করা হয়েছে:

http://bynomial.com/blog/?p=24


18

বৈশিষ্ট্য center, boundsএবং frameinterlocked করা হয়: পরিবর্তন এক অন্যান্যদের আপডেট হবে, তাই তাদের ব্যবহার কিন্তু আপনি চান। উদাহরণস্বরূপ, frameকোনও দৃশ্যের পুনর্বার জন্য x / y প্যারামগুলি পরিবর্তনের পরিবর্তে centerসম্পত্তিটি আপডেট করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.