আমার ইউআইএসক্রোলভিউতে সীমাবদ্ধতা সেট করতে আমি কীভাবে অটোলেআউট ব্যবহার করতে পারি?


176

অটোলেআউট এর আগে একটি তুচ্ছ স্ক্রোলভিউ সেটআপ কী ছিল তা অর্জন করার জন্য আমি মিশ্রিত এবং খাঁটি অটোলেআউট পদ্ধতির জন্য বিভিন্ন সমাধান চেষ্টা করে দু'দিন ব্যয় করেছি এবং এটি এখন অফিসিয়াল - আমাকে অবশ্যই খুব বোকা হতে হবে। আমি এটি বেশিরভাগ স্টোরিবোর্ডে স্থাপন করছি (ভাল, এটি ঠিক এটি ঠিক))

তাই আমার সাহায্যের জন্য এই আবেদন।

Viewtree:

UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton

বোতামগুলি অনুভূমিকভাবে স্ক্রোল করার কথা (বাম থেকে ডান এবং বিপরীতে)। কেউ দয়া করে খাঁটি অটোলেআউট ব্যবহার করে এটি অর্জনের সীমাবদ্ধতাগুলি কীভাবে সেট করবেন তা আমাকে জানাতে পারেন ???

-

আমি মিশ্র পদ্ধতির চেষ্টা করেছি, যেমন:

UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton

... এবং সেটিং নির্দিষ্ট প্রস্থ এবং উচ্চতা সীমাবদ্ধতার contentviewএবং translatesAutoresizingMaskIntoConstraintsপ্রতি অ্যাপলের TechNote যেমন সেটিংস। বাটনগুলি এবং স্ক্রোলভিউ সীমাবদ্ধতা ব্যবহার করে সেট আপ করা হয়। এটি স্ক্রোলভিউ স্ক্রোলিং (হ্যাঁ) পায় তবে হায়, এটি খুব বেশি স্ক্রোল করে! আমি যতদূর বলতে পারি, কন্টেন্টভিউটি আমি সেট করেছিলাম তার থেকে স্ক্রোলের প্রস্থটি কোনওভাবে দ্বিগুণ হয়ে গেছে ??? !!! ???

আমি পাশাপাশি contentviewএবং বাইরেও খাঁটি অটোলেআউট পদ্ধতির চেষ্টা করেছি । সমস্ত মতামত translatesAutoresizingMaskIntoConstraints=NOছাড়া, হয় self.view। বোতামগুলির প্রস্থ / উচ্চতার সীমাবদ্ধতাগুলি স্থির রয়েছে এবং স্ক্রোলভিউয়ের চারটি প্রান্তে পিন করা আছে। কিছুই স্ক্রোল।

সুতরাং আমি কেন পুরোপুরি হতবাক হয়েছি কেন আমি এটি সঠিকভাবে কাজ করতে পারি না। কোনও সহায়তা অনেক প্রশংসা করা হয়, এবং আপনার যদি অন্য কোনও তথ্য প্রয়োজন হয়, দয়া করে জিজ্ঞাসা করুন!

সমাধান সহ আপডেট হওয়া স্ক্রিনশট - বাটনেজ সীমাবদ্ধতা:

এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা করুন জেমি ফরেস্ট সুতরাং সমাধানটি শেষ বোতামে ভুলের পিছনে থাকা বাধা হিসাবে প্রমাণিত হয়েছে। 6441 এর পরিবর্তে, আমি যে মানটি সেট করেছিলাম তা নেতিবাচক, -6441। জটিল জিনিসটি হ'ল স্টোরিবোর্ডে মান সেট করার সময় পিন টুলবারে দুটি বিকল্প থাকে:

এখানে চিত্র বর্ণনা লিখুন

বর্তমান ক্যানভাস মানটি নেতিবাচক (কোনও স্ক্রোলের দিকে নয়) এবং নীচের বিকল্পটি ইতিবাচক (স্ক্রোল সক্রিয়করণ)। এর অর্থ আমি বোকা নই তবে কমপক্ষে অর্ধ-অন্ধ আমি অনুমান করি। যদিও, আমার প্রতিরক্ষার কাছে, এটি কিছুটা বিরক্ত করছে না যে এক্সকোড "ভুল" সেটিংসের জন্য কোনও ত্রুটি দেখায় না?

পুনরায় সম্পাদনা করুন এখন এটি মজার বিষয় ... -64৪৪১ (কোনও স্ক্রোল নয়) থেকে 41৪৪৪ সক্রিয় স্ক্রোলটিতে অনুমানের মান পরিবর্তন করা। তবে আমার পুরানো বন্ধুটি "অত্যধিক বিষয়বস্তু" ফিরে এসেছিল, যা কন্টেন্টের আকারের চেয়ে দ্বিগুণ আকারের হতে পারে! সঠিক কন্টেন্ট স্ক্রোলটি পাওয়ার সমাধানটি ছিল শূন্যের পিছনে সীমাবদ্ধতা নির্ধারণ করা! স্টোরিবোর্ডে কাজ করার সময় এটি স্পষ্ট নয় তবে @ ইনফিনিটি জেমস এর কোডটি দেখলে এটি হওয়া উচিত।


আপনি কোথায় আপনার স্ক্রোল দেখার জন্য সামগ্রীর আকার নির্ধারণ / সেট করবেন? কনটেন্ট ভিউ ব্যবহার করে আপনার প্রথম প্রয়াসের কথা উল্লেখ করে আপনি বলেছিলেন যে এটি খুব দূরে স্ক্রোল করে।
টিম

2
যতদুর আমি জানি, আপনি সেট করতে পারে না contentSizeএকটি এর UIScrollViewব্যবহার করে শুধুমাত্র স্বয়ংক্রিয় বিন্যাস। এবং এটি এটিই contentSizeনির্ধারণ করে যে আপনি কতটা স্ক্রোল করতে পারেন। সুতরাং আপনি এটি ম্যানুয়ালি শেষ পর্যন্ত কোথাও সেট করতে হবে। বাকিগুলির জন্য, আপনি একে অপরের সাথে সম্পর্কিত ফ্রেমগুলি সেট আপ করতে লেআউট সীমাবদ্ধতাগুলি ব্যবহার করতে পারেন।
গিলিয়াম

@ জেফ, সামগ্রীর আকার স্থির রয়েছে, এটি কখনই পরিবর্তন হয় না। আমি কন্টিটিভিউর জন্য ম্যানুয়ালি সঠিক উচ্চতা এবং প্রস্থ byুকিয়ে স্টোরিবোর্ডে সামগ্রীর আকার সেট করেছি এবং স্টোরিবোর্ডের সীমাবদ্ধতার সাথে উচ্চতা এবং প্রস্থকে পিন করেছি।
user1459524

রান করার সময় আপনার কন্টেন্টসাইজ প্রিন্ট করুন, এটি আপনার ইনপুটটির মানগুলির সাথে মেলে কিনা তা দেখুন। কন্টেন্টসাইজ নির্ধারণ করে কত স্ক্রোল ঘটে তাই আপনার প্রথম প্রয়াসের বিষয়টি বিষয়বস্তু আকারের সাথে করা।
টিম

@ গুইলুম, সুতরাং "খাঁটি অটোলেআউট" পদ্ধতির পরে কি এতটা শুদ্ধ নয়? তবে আমি কীভাবে ম্যানুয়ালি কন্টেন্টসাইজ সেট করব? আমি উপরে উল্লিখিত হিসাবে, আমি স্থির মানগুলিতে সামগ্রীর দৃশ্যের উচ্চতা / প্রস্থ সেট করছি (স্টোরিবোর্ডে)। তবে এটি খুব দূরে স্ক্রোল করে (2x)।
user1459524

উত্তর:


68

আপনি এখানে যেমন আটকে রেখেছেন তেমন সীমাবদ্ধতার যথাযথ মান এবং সেটআপটি পাওয়া শক্ত, সুতরাং আপনার স্ক্রিনশটগুলি যেখানে আপনি ভুল হয়ে গেছেন তা দেখার বিষয়ে আমি নিশ্চিত নই।

আপনার সেটআপে কী কী ভুল হয়েছে তার ব্যাখ্যার পরিবর্তে, আমি আপনার বর্ণিত ব্যক্তির সাথে খুব অনুরূপ দৃষ্টিভঙ্গি এবং সীমাবদ্ধতা সেটআপ সহ একটি বেসিক নমুনা প্রকল্প তৈরি করেছি । অনুভূমিক স্ক্রোলিং নমুনা প্রকল্পে প্রত্যাশার মতো কাজ করে, যা অ্যাপল প্রযুক্তিগত নোটে বর্ণিত "খাঁটি অটলয়আউট" পদ্ধতির ব্যবহার করে ।

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

অন্যটি যেমন অটোলআউট এবং ইউআইএসক্রোলভিউয়ের দ্বারা উল্লিখিত হয়েছে তেমন নোটটিও, আপনি আর বিষয়বস্তু আকারটি সুস্পষ্টভাবে সেট করেন না। অটোয়ালআউট সিস্টেম আপনার সীমাবদ্ধতার উপর ভিত্তি করে কন্টেন্টসাইজ গণনা করে।

আমি এই ইবুক অধ্যায়টি কীভাবে এই সমস্ত কাজ করে তা আমাকে বোঝাতে খুব সহায়ক বলে মনে করে। আশা করি এই সব সাহায্য করবে।


2
আপনাকে নমুনা প্রকল্পের জন্য ধন্যবাদ! এটি কাজ করে, এবং এটি সন্ধান করার সময়, আমি প্রথমে আমার প্রকল্পের সাথে কোনও পার্থক্য খুঁজে পাইনি! সীমাবদ্ধতা ব্যতীত অন্য কিছু সেটিংস সন্দেহ করে আমি আমার প্রকল্পে এই দর্শনগুলি অনুলিপি করেছি, তবে এটি কাজ করেই চলেছে। এটি আমাকে লক্ষ্য করতে বাধ্য করেছিল যে আমার প্রকল্পের শেষ বোতামটির পিছনে বাধাটি নেতিবাচক রয়েছে - এর সামনে, যখন আপনার ইতিবাচক মান রয়েছে! - ইতিবাচক সক্ষম স্ক্রোল থেকে পরিবর্তন! আমি যখন পিন টুলবারটি নিয়ে আসি, তখন দুটি পছন্দ থাকে: কারেন্ট ক্যানভাস মানটি, যা নেতিবাচক, এবং স্ক্রোল ভিউ (বর্তমান মান ব্যবহার করুন) ব্যবহার করুন যা ইতিবাচক ... !?
ব্যবহারকারী1459524

অই হ্যাঁ. নেতিবাচক মানটি আসলে স্ক্রোল ভিউটির কন্টেন্টসাইজকে আরও ছোট করে তুলবে, বোতামটি শেষ হওয়ার আগে পিছনের প্রান্তটি শেষ হওয়া উচিত match নমুনা প্রকল্প সাহায্য করেছে!
জেমি ফরেস্ট

এটা অনেক কিছু করেছে। আমার আপডেট হওয়া উত্তরটি দেখুন। পেছনের মানটি আসলে 0 (শূন্য) হওয়া উচিত।
user1459524

6
আমাদের কাছে কোডের পরিবর্তে স্ক্রিনশটগুলি ভাগ করতে হবে এটি দুঃখজনক। এটি কেবল কারণ অ্যাপল বিকাশকারীদের আরও ভাল এপিআই সরবরাহের পরিবর্তে বিল্ডার ব্যবহার করতে উত্সাহিত করে।
ভ্লাদিমার স্লাভাক

4
পুরোপুরি অনিশ্চিত। এক্সকোডের নির্মাতাদের মনে কী চলছে তা চিত্রিত করার জন্য বিকাশকারীদের ঘন্টা এবং ঘন্টা নষ্ট করতে হবে।
জোশ

49

LOL বোকামি ক্লাবে স্বাগত জানাই। আমি অন্যতম প্রতিষ্ঠাতা। : ডি

ভার্টিকাল স্ক্রোলিংয়ের জন্য : আমি যেভাবে কাজ করতে পারি তার একমাত্র উপায় (আইওএস 8, এক্সকোড 6 এবং খাঁটি অটোলেআউট) আমার স্ক্রোল ভিউতে (সমস্ত তত্ত্বাবধানের সাথে সম্পর্কিত) নিম্নলিখিত সীমাবদ্ধতাগুলি যুক্ত করছিল:

  • সমান প্রস্থ
  • সমান উচ্চতা
  • কেন্দ্র ওয়াই সারিবদ্ধ
  • কেন্দ্র এক্স প্রান্তিককরণ

আমার কাঠামো:

  UIView
   - ScrollView
    - Subview
    - Subview
    - Subview
    - Subview
    - ...

এই চূড়ান্ত ফলাফল:

ডেমো

এটি সেটআপ:

সেটআপ পূর্ণ পর্দা

এবং এখানে প্রকল্প

আশা করি এটি কাউকে সকাল 5 টায় ঝাঁপিয়ে পড়া থেকে রক্ষা করবে। : ডি


সহযোগিতার জন্য অসংখ্য ধন্যবাদ! "সাবভিউ" টাইপের সংক্ষিপ্তসারটি আপনি কীভাবে পেলেন ?? আমি আপনার প্রকল্পটি এক্সকোড in.২ এ দেখছি, এবং এটি এই ছোট্ট আয়তক্ষেত্রগুলিকে "সাবউইউ" বলছে এটি কেবলমাত্র সীমাবদ্ধতার সাথে it's৩px উচ্চ।
অ্যান্ড্রু কে

1
গ্রিটিংস! সেই "সাবভিউ" আসলে একটি ইউআইভিউইউ। এটি কেবল একটি নাম ... আপনি সেখানে যে কোনও কিছু টাইপ করতে পারেন। এই চিত্রটি দেখুন: cl.ly/image/291f1K2N0V3p সীমাবদ্ধতার বিষয়টিতে, সংক্ষিপ্তসারগুলি কেবল একটি উচ্চতার সীমাবদ্ধতার চেয়ে বেশি থাকে। এখানে এই দর্শনগুলির জন্য সম্পূর্ণ সীমাবদ্ধতার তালিকাটি দেখুন: cl.ly/image/3l061i123j2i
ব্যাকস্ল্যাশ-

1
আমি এখনও স্ক্রোলিংয়ের কাজ করতে সক্ষম নই - আমি লক্ষ্য করেছি যে আপনার প্রকল্পে আপনার সাবভিউ ভিউগুলি "গ্রেড আউট" হয়েছে। কিছু গবেষণা করার পরে, দেখে মনে হচ্ছে এটি 'সাইজ ক্লাস' ব্যবহার করছেন। এটি কীভাবে স্ক্রোলিংকে প্রভাবিত করে? এটি ব্যবহার না করে স্ক্রোলিংয়ের কাজ করার কোনও উপায় আছে কি?
অ্যান্ড্রু কে

এছাড়াও, আপনি কীভাবে আপনার তত্ত্বাবধানটি ডিফল্ট দৈর্ঘ্যের চেয়ে এত দীর্ঘ করলেন? আমি বোতামগুলি যোগ করার চেষ্টা করছি যা "ভাঁজের নীচে" (বা স্ক্রিনের বাইরে) প্রদর্শিত হবে তবে স্পষ্টত আমি এগুলিকে তত্ত্বাবধানে যুক্ত করতে পারি না যদি এগুলি যথেষ্ট বড় না হওয়ায় আমি এগুলি টেনে আনতে এবং ড্রপ করতে না পারি।
অ্যান্ড্রু কে

1
দীর্ঘদিন অনুসন্ধান এবং এই বোকামি লেআউটটি করার চেষ্টা করার পরে, আমি এই উত্তরটি পেয়েছি এবং প্রথম প্রয়াসে কাজ করি .. ধন্যবাদ মানুষ .. আপনি আমার দিনটি বাঁচান .. আমি আশা করি আমি এই উত্তরটির জন্য হাজার হাজার ভোট দিতে পারতাম ..: )
ববি স্টেনলি

32

সাধারণ স্ব-অন্তর্ভুক্ত উদাহরণ

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

এখানে চিত্র বর্ণনা লিখুন

মূল প্রশ্নটি স্ক্রোলিং বোতাম সম্পর্কে জিজ্ঞাসা করে। এখানে আমি কেবল UIViewএস ব্যবহার করি তবে তারা আপনার পছন্দ মত যা উপস্থাপন করতে পারে। আমি অনুভূমিক স্ক্রোলিংটিও বেছে নিয়েছি কারণ স্টোরিবোর্ডের স্ক্রিনশটগুলি এই ফর্ম্যাটের জন্য আরও কমপ্যাক্ট। যদিও উল্লম্ব স্ক্রোলিংয়ের জন্য নীতিগুলি একই।

মূল ধারণা

  • UIScrollViewশুধুমাত্র এক subview ব্যবহার করা উচিত। এটি এমন একটি 'ইউআইভিউ' যা আপনার স্ক্রোল করতে ইচ্ছুক সমস্ত বিষয়বস্তু ধারণ করার জন্য সামগ্রী দৃশ্য হিসাবে কাজ করে।
  • সামগ্রীটি দেখুন এবং স্ক্রোল ভিউর পিতামাতার অনুভূমিক স্ক্রোলিংয়ের জন্য সমান উচ্চতা রয়েছে Make (উল্লম্ব স্ক্রোলিং জন্য সমান প্রস্থ)
  • নিশ্চিত হয়ে নিন যে সমস্ত স্ক্রোলযোগ্য সামগ্রীটির একটি প্রস্থ রয়েছে এবং সমস্ত পক্ষেই পিন করা আছে।

একটি নতুন প্রকল্প শুরু করুন

এটি কেবল একটি একক দর্শন অ্যাপ্লিকেশন হতে পারে।

স্টোরিবোর্ড

এই উদাহরণে আমরা একটি অনুভূমিক স্ক্রোল ভিউ করব। ভিউ কন্ট্রোলারটি নির্বাচন করুন এবং তারপরে আকার পরিদর্শকের ফ্রিফর্মটি চয়ন করুন। প্রস্থ 1,000এবং উচ্চতা তৈরি করুন 300। এটি কেবল আমাদের স্টোরবোর্ডে এমন সামগ্রী যুক্ত করার জন্য জায়গা দেয় যা স্ক্রোল করবে।

এখানে চিত্র বর্ণনা লিখুন

একটি স্ক্রোল ভিউ যুক্ত করুন

UIScrollViewভিউ কন্ট্রোলারের রুট ভিউতে একটি চারটি দিক এবং পিন যুক্ত করুন ।

এখানে চিত্র বর্ণনা লিখুন

একটি সামগ্রী দেখুন

UIViewস্ক্রোল ভিউতে সাবউভিউ হিসাবে যুক্ত করুন । এটি কী। স্ক্রোল ভিউতে প্রচুর সাবভিউ যুক্ত করার চেষ্টা করবেন না। শুধু একটি একক যোগ করুন UIView। আপনি যে অন্যান্য ভিউ স্ক্রোল করতে চান এটির জন্য এটি আপনার সামগ্রী দর্শন হবে। চারদিকের সামগ্রী স্ক্রোল ভিউতে পিন করুন।

এখানে চিত্র বর্ণনা লিখুন

সমান উচ্চতা

এখন ডকুমেন্টের আউটলাইনে, Commandউভয় বিষয়বস্তু দর্শন এবং স্ক্রোল ভিউর প্যারেন্ট ভিউ উভয়টিকেই বেছে নিতে ক্লিক করুন। তারপরে উচ্চতাগুলি সমান হতে সেট করুন ( Controlসামগ্রীর ভিউ থেকে স্ক্রোল ভিউতে টানুন)। এটিও মূল বিষয়। যেহেতু আমরা অনুভূমিকভাবে স্ক্রোল করছি, স্ক্রোল ভিউয়ের সামগ্রী দর্শনটি যদি আমরা এইভাবে সেট না করি তবে এটি কতটা উঁচুতে হবে তা জানবে না।

এখানে চিত্র বর্ণনা লিখুন

বিঃদ্রঃ:

  • যদি আমরা বিষয়বস্তুটি উল্লম্বভাবে স্ক্রোল করে তুলছিলাম তবে আমরা সামগ্রী লিখিত দৃষ্টির প্রস্থকে স্ক্রোল দর্শনের পিতামাতার প্রস্থের সমান করে সেট করব।

সামগ্রী যুক্ত করুন

তিনটি যুক্ত করুন UIViewএবং তাদের সমস্ত বাধা দিন। আমি সব কিছুর জন্য 8 পয়েন্ট মার্জিন ব্যবহার করেছি।

এখানে চিত্র বর্ণনা লিখুন

সীমাবদ্ধতাসমূহ:

  • সবুজ দৃশ্য: উপরে, বাম এবং নীচে প্রান্তটি পিন করুন। প্রস্থ 400 করুন।
  • লাল দৃশ্য: উপরে, বাম এবং নীচের প্রান্তগুলিকে পিন করুন। প্রস্থ 300 করুন।
  • বেগুনি দর্শন: চারটি প্রান্তের প্রান্তটি পিন করুন। বাকী স্থান যা আছে তা প্রস্থ করুন (এই ক্ষেত্রে 268)।

প্রস্থের সীমাবদ্ধতাগুলি সেট করাও কী, যাতে স্ক্রোল ভিউটি জানতে পারে যে এর সামগ্রী দৃশ্য কত প্রশস্ত হবে।

সমাপ্ত

এখানেই শেষ. আপনি এখন আপনার প্রকল্প চালাতে পারেন। এই উত্তরের শীর্ষে স্ক্রোলিং চিত্রের মতো আচরণ করা উচিত।

উল্লম্ব স্ক্রোলিংয়ের জন্য, কেবলমাত্র এই উদাহরণে সমস্ত প্রস্থ এবং উচ্চতার দিকগুলি অদলবদল করুন (পরীক্ষিত এবং কাজ করা)।

আরও অধ্যয়ন


9

কনটেন্টসাইজটি সুস্পষ্টভাবে ইউআইএসক্রোলভিউয়ের ভিতরে সীমাবদ্ধতা প্রয়োগ করে সেট করা আছে।

উদাহরণস্বরূপ, আপনি কি কোনও ইউআইভিউ-র ভিতরে একটি ইউআইএসক্রোলভিউ রয়েছেন এটি দেখতে এটির মতো দেখাবে (যেমন আমি নিশ্চিত যে আপনি সচেতন):

    UIView *containerView               = [[UIView alloc] init];
    UIScrollView *scrollView            = [[UIScrollView alloc] init];
    [containerView addSubview:scrollView];
    containerView.translatesAutoresizingMaskIntoConstraints = NO;
    scrollView.translatesAutoresizingMaskIntoConstraints    = NO;
    NSDictionary *viewsDictionary       = NSDictionaryOfVariableBindings(containerView, scrollView);

    [containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|"
                                                                          options:kNilOptions
                                                                          metrics:nil
                                                                            views:viewsDictionary]];
    [containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|"
                                                                          options:kNilOptions
                                                                          metrics:nil

এটি কনটেইনারভিউয়ের আকার পূরণ করতে স্ক্রোলভিউ সেট করবে (যাতে ধারকভিউ একটি নির্দিষ্ট আকারের হতে হবে)।

এরপরে আপনি ইউআইএসক্রোলভিউয়ের কন্টেন্টসাইজ সামঞ্জস্য করতে পারেন যাতে এটি স্পষ্টতই এটির মতো বোতামগুলি ধরে রাখতে যথেষ্ট বড় হয়:

    UIButton *buttonA                   = [[UIButton alloc] init];
    UIButton *buttonB                   = [[UIButton alloc] init];
    UIButton *buttonC                   = [[UIButton alloc] init];
    [scrollView addSubview:buttonA];
    [scrollView addSubview:buttonB];
    [scrollView addSubview:buttonC];
    buttonA.translatesAutoresizingMaskIntoConstraints       = NO;
    buttonB.translatesAutoresizingMaskIntoConstraints       = NO;
    buttonC.translatesAutoresizingMaskIntoConstraints       = NO;

    viewsDictionary                     = NSDictionaryOfVariableBindings(scrollView, buttonA, buttonB, buttonC);

    [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[buttonA]-|"
                                                                       options:kNilOptions
                                                                       metrics:nil
                                                                         views:viewsDictionary]];
    [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[buttonA]-[buttonB]-[buttonC]-|"
                                                                       options:NSLayoutFormatAlignAllBaseline
                                                                       metrics:nil
                                                                         views:viewsDictionary]];

সুতরাং, আমি স্ক্রোলভিউ এবং বোতামগুলির মধ্যে সীমাবদ্ধতাগুলি সেট করেছি, এবং কনটেইনারভিউ এবং বোতামগুলির মধ্যে নয়? আমি মনে করি এটি কেবলমাত্র আপনার কোডের সাথে জড়িত এবং আমি এখন স্টোরিবোর্ডের মাধ্যমে কী করছি difference
ব্যবহারকারী1459524

আমি কেবল দ্বিতীয় পাঠের পরে উপলব্ধি করেছিলাম যে আপনি একটি কনটেনরভিউ সেটআপ করছেন এবং কোনও কনটেন্ট ভিউ নয়। আপনার কোডের ভিত্তিতে, আমি স্টোরিবোর্ডে সবকিছু ঠিকঠাক তৈরি করেছি এবং এটি স্ক্রোলিং নয়। আমি আমার স্ক্রিনশট দিয়ে আমার প্রশ্নটি সম্পাদনা করব।
ব্যবহারকারী1459524

1
সুতরাং স্টোরবোর্ডে কোডটি পুনরায় তৈরি করার আমার প্রয়াসটি 100% সঠিক ছিল না। শেষ বোতামটির পিছনের মানটি হ'ল: | - [বাটনএ] - [বাটনবি] - [বাটনসি] - | মিরর করে ঠিক শূন্য হওয়া উচিত যা স্টোরিবোর্ডে কাজ করার সময় খুব স্পষ্ট নয় (বা কমপক্ষে আমার কাছে ছিল না) তবে এখন ঘটনাটি তুচ্ছ মনে হয়। আমি স্বয়ংক্রিয়-বহির্বিন্যাস ভালবাসেন কিন্তু যারা সামান্য জিনিস আগে পেতে ...
user1459524

@ ব্যবহারকারী1459524 যা উল্লেখ করেছেন তা আমার জন্য একটি সমস্যা। আমার নীচের দৃশ্যটি একটি বোতাম ছিল এবং নীচের সীমাবদ্ধতা ছিল আইবি দ্বারা -32। আমি এটি 0 তে সেট করেছিলাম এবং এটি আইবিতে আপডেট হয়েছিল নীচে স্থান থেকে: তত্ত্বাবধানে। এটি কাজ করবে, এমনকি এটি যতক্ষণ ইতিবাচক পক্ষে কাজ করে ততক্ষণ মনে হয় seems দেখে মনে হচ্ছে এটি আইবি সহ একটি বাগ হতে পারে। আশা করি এটি অন্য কাউকে সাহায্য করবে। আমি সমস্ত দর্শনগুলিও সরিয়ে দিয়েছি এবং পুনরায় সংযুক্ত হয়েছি যা এইগুলি খুঁজে বের করার চেষ্টা করার সময় আমার সহায়তা করে এবং এটি সাধারণত বেশি সময় নেয় না।
মাইকেল

8

ইউআইএসক্রোলভিউয়ের সাথে অটোলআউট ব্যবহার সম্পর্কে অনেক প্রশ্ন রয়েছে, মূল বিষয় যা আমরা উপেক্ষা করি তা হ'ল ইউআইএসক্রোলভিউয়ের অভ্যন্তরীণ দৃষ্টিভঙ্গি বিষয়বস্তুর দৃশ্যের বিরুদ্ধে বাধা সৃষ্টি করে তবে নিজেই ইউআইএসক্রোলভিউ নয়। পড়ুন কারিগরী নোট TN2154 , আপনি পেতে পারেন:

ইউআইএসক্রোলভিউ ক্লাস তার সীমানাগুলির উত্স পরিবর্তন করে এর সামগ্রীটিকে স্ক্রোল করে। অটো লেআউট দিয়ে এই কাজটি করার জন্য, উপরে, বাম, নীচে এবং ডান প্রান্তগুলিকে একটি স্ক্রোল ভিউয়ের মধ্যে এখন এর সামগ্রী দেখার প্রান্তকে বোঝায়।

নিম্নলিখিত চিত্রটি চিত্রিত করবে: এখানে চিত্র বর্ণনা লিখুন

আপনি পেছনের স্থানটি 500 পয়েন্টের সন্ধান করতে পারেন, যদি ইউআইএসক্রোলভিউতে প্রতিবন্ধকতা তৈরি করা হয় তবে দৃশ্যটি মিস করা হবে এবং তার ফ্রেমটি আপডেট করা উচিত। তবে কোনও সতর্কতা এবং কোনও ত্রুটি নেই। কারণ সমস্ত প্রতিবন্ধকতা সামগ্রী দেখার বিরোধী against

ইউআইএসক্রোলভিউ অভ্যন্তরীণ দর্শনের সীমাবদ্ধতা অনুসারে সামগ্রী ভিউয়ের আকার গণনা করবে। (উদাহরণস্বরূপ, সামগ্রীর আকার: প্রস্থ = 100 (অগ্রণী স্থান) + 200 (দেখার প্রস্থ) + 500 (পিছনের স্থান), উচ্চতা = 131 (শীর্ষ ব্যবধান) + 200 (উচ্চতা) + 269 (নীচের ব্যবধান)

ইউআইএসক্রোলভিউতে দর্শনগুলির জন্য সীমাবদ্ধতা কীভাবে যুক্ত করবেন:

  1. বিষয়বস্তু দর্শন দর্শন পজিশনের চিত্র।
  2. শীর্ষস্থানীয়, ডান, নীচে, বাম স্পেসিংটি সামগ্রীর ভিউয়ের প্রান্তগুলিতে যুক্ত করুন, উপরন্তু, এই দর্শনগুলির প্রস্থ এবং উচ্চতাও।

এবং এটি সব সম্পন্ন হয়েছে।

স্ক্রোলভিউয়ের সাথে অটোলআউটকে মোকাবেলা করার একটি সহজ উপায় হ'ল স্ক্রোল ভিউতে সমস্ত সাবভিউ সমন্বিত একটি ধারক ভিউ যুক্ত করা।

উপসংহার: ইউআইএসক্রলভিউয়ের সাথে অটোলআউটটি বোঝার মূল পয়েন্টটি অভ্যন্তরীণ ভিউগুলি সামগ্রীর দৃশ্যের বিরুদ্ধে প্রতিবন্ধকতা তৈরি করে তবে নিজেই ইউআইএসক্রোলভিউ নয়।

সংযুক্ত উদাহরণ কোড


5

নিম্নলিখিত সমাধানটি অটোলেআউট এবং কন্টেন্টসাইজ ছাড়াই স্ক্রোলভিউয়ের জন্য আমার পক্ষে কাজ করেছে :

  1. ভিউকন্ট্রোলারের জন্য একটি স্ক্রোলভিউ এনে টানুন এবং আপনার পছন্দসই স্থানটি coverাকতে যে কোনও প্রতিবন্ধকতা প্রয়োগ করুন।
  2. টেনে আনুন এন একটি ড্রপ UIView scrollView ভিতরে এবং এটি scrollView সমগ্র স্থান আবরণ এবং প্রয়োগ করতে উপরের বাম, ডান, নীচে স্থান হতে সীমাবদ্ধতার scrollView থেকে।
  3. স্ক্রোলিংয়ের প্রয়োজনীয়তা অনুসারে অভ্যন্তরীণ দৃশ্যের উচ্চতা (এবং অনুভূমিক স্ক্রোলিংয়ের প্রয়োজন হলে প্রস্থ) সেট করুন । এই অংশটি প্রয়োজন থেকে কোড থেকেও করা যেতে পারে।
  4. ক্রিটিক্যাল । আপনি পয়েন্ট (3) এ কিছু বড় মানের উচ্চতা নির্ধারণ করার পরে, বিন্দুতে (2) ফিরে যান এবং উপরের, বাম, ডান, নীচের মানগুলি শূন্যে ফিরে আসার বিষয়ে নিশ্চিত হন কারণ আপনি যখন জোর করেন তখন Xcode আপনার জন্য সেগুলি পরিবর্তন করতে পারে উচ্চতা পরিবর্তন (3)।

এবং তুমি করে ফেলেছ. এখন, আপনি এই ভিউতে যে কোনও সংখ্যক নিয়ন্ত্রণ যুক্ত করতে পারেন এবং একে অপরের সাথে সম্পর্কিত সীমাবদ্ধতাগুলি প্রয়োগ করতে পারেন (যা এই দৃষ্টিভঙ্গি ব্যতীত কাজ করে বলে মনে হয় না)। আপনি যদি এই ভিউটি ব্যবহার করতে না চান তবে আপনাকে স্ক্রোলভিউ সম্পর্কিত প্রতিটি নিয়ন্ত্রণের জন্য বাধা প্রয়োগ করতে হবে (একে অপরের সাথে সম্পর্কিত নয়)।


অপ্রতিরোধ্য টিপ ..............

ক্রিটিক্যাল । সুস্পষ্টতার জন্য বলি ইউআইএসক্রোলভিউ 1000 প্রশস্ত এবং 100 উচ্চ। (আসলে সাধারণত এই মানগুলি গতিশীল হবে, অবশ্যই, ডিভাইসের প্রস্থের উপর নির্ভর করে ইত্যাদি ইত্যাদি। তবে আপাতত 1000 প্রশস্ত এবং 100 টি উচ্চ বলুন)) আসুন আমরা বলি যে আপনি একটি অনুভূমিক স্ক্রোল করছেন। সুতরাং ইউআইএসক্রোলভিউয়ের মধ্যে একটি ইউআইভিউ রাখুন। (এটি হ'ল "বিষয়বস্তু দেখুন")) শীর্ষস্থানীয়, নীচে, শীর্ষস্থানীয়, অনুসরণ করার জন্য সামগ্রী স্ক্রোল দর্শনে চারটি সীমাবদ্ধতা সেট করুন। এটিকে ভুল মনে হলেও এগুলি সমস্ত শূন্য করুন। সামগ্রীটি ইউআইভিউউউয়ের উচ্চতা 100 এ সেট করুন এবং সে সম্পর্কে ভুলে যান। এখন: আপনি আনুভূমিকভাবে স্ক্রোল করতে চান, সুতরাং 1225 বলে নেওয়া যাক বিষয়বস্তুর দৃশ্যের প্রস্থকে সেট করুন।

নোট করুন বিষয়বস্তু দেখার প্রশস্ততা এখন প্যারেন্ট স্ক্রোল দর্শনের প্রস্থের চেয়ে 225 বড়। এটি ঠিক আছে: আসলে, আপনি এটি করা উচিত। মনে রাখবেন যে

... আপনি পিছনের প্রস্থটিকে নেতিবাচক 225 তে সেট করবেন না ...

আপনি ভাববেন যে আপনি সাধারণত যেভাবে প্রস্থগুলি "মিল" করতে পারেন । তবে আপনি যদি এটি করেন তবে এটি মোটেই কার্যকর হবে না।

আপনাকে অবশ্যই জিরোতে শীর্ষস্থানীয় এবং পেছনের নম্বরগুলি সেট করতে হবে , কখনও নেতিবাচক নয় (যদিও প্রস্থটি "বড়" হলেও)

মজার বিষয় হল, আপনি যে কোনও ধনাত্মক মানের দিকে অগ্রণী / পিছনে নম্বরগুলি সেট করতে পারেন ("50" বলার চেষ্টা করুন) এবং এটি আপনাকে বাউনের এক প্রান্তের মার্জিন দেয়। (এটি প্রায়শই দুর্দান্ত দেখায়: চেষ্টা করে দেখুন either) উভয় প্রান্তের যে কোনও নেতিবাচক মান "নিঃশব্দে ভেঙে" যাবে।

নোট করুন যে, চূড়ান্তভাবে, প্রায়শই Xcode (যাইহোক 7.3.1 হিসাবে),

আপনার জন্য নেতিবাচক সংখ্যায় 'সহায়কভাবে' সেট করে দেবে!

কারণ এটি আপনার জন্য স্বয়ংক্রিয়ভাবে সেগুলি সংযুক্ত করার চেষ্টা করে। তা হলে চুপচাপ ভেঙে যাবে। প্রথম উদাহরণে চারটি মানকে শূন্যে সেট করুন। এবং উদাহরণস্বরূপ "1000" এর চেয়ে বেশি বিস্তৃত সামগ্রী প্রদর্শনের প্রস্থ নির্ধারণ করুন।


সম্পাদিত: আমি আমার বেশিরভাগ প্রয়োজনীয়তার জন্য ইউআইএসক্রোলভিউয়ের পরিবর্তে ইউআইটিএবলভিউ ব্যবহার করে শেষ করেছি। টেবিলভিউ হিসাবে আমার কাছে অনেক বেশি নমনীয় এবং গতিশীল বলে মনে হচ্ছে।


এটি আসলে এখানে সেরা উত্তর। ধন্যবাদ!
ফ্যাটি

4

আমি আপনার সাথে সমস্যার সম্মুখিন হতে হচ্ছে.আপনি অনুমান contentSize। "খাঁটি" অটোলআউট পদ্ধতির ব্যবহার করার সময় কীভাবে পরিচালনা করতে হবে এই ব্লগ পোস্টটি দেখুনcontentSize । এর সংক্ষিপ্তসারটি হ'ল আপনার সীমাবদ্ধতাগুলি সামগ্রীর আকারকে সুস্পষ্টভাবে সংজ্ঞায়িত করে। অটোলআউট ব্যবহার করার সময় আপনি এটিকে সুস্পষ্টভাবে কখনও সেট করেন নি। আমি ব্লগ পোস্টের শেষে উদাহরণস্বরূপ প্রকল্পটি সংযুক্ত করেছি যাতে এটি কীভাবে কাজ করে তা প্রদর্শন করে


3

প্রযুক্তি নোটগুলির মধ্যে একটি টুকরো রয়েছে যা আপনি হয়ত দেখেছেন। আপনি স্প্রোললি স্ক্রোল ভিউয়ের প্রান্তগুলিতে স্থির হওয়া সীমাবদ্ধতাগুলি ব্যবহার করে কোনও স্ক্রোল ভিউয়ের সামগ্রী আকার নির্ধারণ করতে পারেন।

এখানে একটি সহজ উদাহরণ। একটি ভিউ সহ একটি স্টোরিবোর্ড তৈরি করুন, এতে একটি স্ক্রোল ভিউ রয়েছে। আপনি যে ভিউটি রেখেছেন তার আকারের সাথে এটি তৈরি করতে স্ক্রোল দর্শনগুলির সীমাবদ্ধতা সেট করুন।

এই স্ক্রোল ভিউয়ের ভিতরে একটি একক দর্শন যুক্ত করুন। স্পষ্টভাবে সীমাবদ্ধতাগুলি ব্যবহার করে সেই দৃশ্যের আকার নির্ধারণ করুন (এবং নিশ্চিত করুন যে সেই আকারটি স্ক্রোলের চেয়ে বড়।

এখন সেই অভ্যন্তরীণ দৃশ্যে আরও চারটি সীমাবদ্ধতা যুক্ত করুন এর প্যারেন্ট স্ক্রোল ভিউতে অভ্যন্তরীণ ভিউয়ের চারটি প্রান্তকে লক করে। এই চারটি সীমাবদ্ধতার ফলে সামগ্রীর আকারটি অভ্যন্তরীণ দৃশ্যের সাথে সামঞ্জস্য করতে প্রসারিত হবে।

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


3

যদি আপনার প্রশ্নটি হয় "আমি উল্লম্বভাবে স্ক্রোলিং ইউআইএসক্রোলভিউতে ইউআইটিেক্সটফিল্ডগুলির একটি গুচ্ছটি কীভাবে রাখব যাতে তারা ফোকাস করার সময় কীবোর্ডের পথ থেকে সরে যায়", সর্বোত্তম উত্তরটি হ'ল:

না।

পরিবর্তে স্থিতিশীল কক্ষগুলির সাথে একটি UITableViewController ব্যবহার করুন।

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


3

আপনি ভালো আপনার লেআউট সংগঠিত করা উচিত
ViewControllerViewরয়েছে ScrollView, ScrollViewরয়েছে ContainerView, ContainerView2 রয়েছেLabels
এখানে চিত্র বর্ণনা লিখুন

তারপরে আপনার ScrollViewক্যান স্ক্রোল তৈরি করার জন্য 3 টি পদক্ষেপ অনুসরণ করুন

  1. সেট ScrollViewপিন (শীর্ষ / ডান / নীচে / বাম) এরViewControllerView
    • সেট ContainerViewপিন (শীর্ষ / ডান / নীচে / বাম) এরScrollView
    • সেট Horizontally in Container( না সেট Vertically in Container)
    • Label1পিন ( উপরে / ডান / বাম) থেকেContainerView
    • Label1পিন (ডান / বাম / নীচে ) এর ContainerViewএবং শীর্ষ করারLabel1

এখানে চিত্র বর্ণনা লিখুন

এখানে ডেমো প্রকল্প

এই সাহায্য আশা করি


1

খাঁটি অটোলেআউট অ্যাপ্রোচ সুন্দরভাবে কাজ করে তবে আপনি অ-অটোলেআউট থেকে স্থানান্তরিত হয়ে থাকলে সেট আপ হয়ে যাওয়া বেশ ব্যথা। আমি এখন এটি কয়েকবার করেছি এবং আমার কয়েকটি সাধারণ টিপস রয়েছে:

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

1

কিছু সময় এই সমস্যাটি মোকাবেলা করার পরে, অবশেষে আমি একটি সমাধান খুঁজে পেয়েছি। আমি সর্বজনীন বর্গ আকারের স্টোরিবোর্ডগুলি (600x600) নিয়ে কাজ করছি। আমি একটি ইউআইভিউ (কন্টেন্টভিউ) আকারে স্ক্রোলভিউর আকার তৈরি করেছি এবং শীর্ষে, নীচে, শীর্ষস্থান এবং স্ক্রোলভিউতে ট্রেলিংয়ের সীমাবদ্ধতা তৈরি করেছি। তারপরে আমি কন্টেন্টভিউয়ের ম্যানুয়ালি আকারটি 600x600 এ ছাঁটাই করেছি। স্টোরিবোর্ডটি সমস্ত কিছুকে পুনরায় আকার দেওয়ার চেষ্টা করল এবং আমি কাজ করতে পারলাম তবে দৃশ্যটি আসল ডিভাইস বা সিমুলেটরটিতে ভয়ঙ্কর লাগছিল। আমি এই ক্লিপযুক্ত আকারের 2 টি বাধা আউটলেট তৈরি করেছি।

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewWidthConstraint; 
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewHeightConstraint;

তারপরে ভিডিডলিডে

CGSize viewSize = self.view.frame.size;
self.contentViewWidthConstraint.constant = viewSize.width;
self.contentViewHeightConstraint.constant = viewSize.height;

দুর্দান্ত কাজ করে।


1

আমি কীভাবে একটি এম্বেড থাকা স্ক্রোলভিউ অটলাইআউট ভিউটি ব্যবহার করতে পারি, দৃশ্যমান স্ক্রিনে স্ক্রোলভিউকে কেন্দ্র করে, সমস্ত ডিভাইস / স্ক্রিনের মাত্রা পাশাপাশি স্ক্রিনের ঘূর্ণনের সাথে কীভাবে ব্যবহার করতে হয় তার সমাধান সন্ধান করার জন্য আমি কয়েক দিন অতিবাহিত করেছি।

আমি কেবল অটোলেআউট দিয়ে এটি করার চেষ্টা করে দিন অতিবাহিত করেছি এবং কাছাকাছি এসেছি তবে কখনও পর্যাপ্ত হয় নি। সুতরাং শেষ পর্যন্ত আমাকে ভিডিডলয়েডে প্রতি পর্দাতে 3 টি লাইন কোড যুক্ত করতে হয়েছিল।

নীচে সমাধান দেখুন:

  1. স্ক্রোলভিউ তৈরি করুন এবং যা কিছু অবজেক্ট আপনি চান তা পূরণ করুন
  2. স্বয়ংক্রিয় বিন্যাস চালু করুন
  3. তারপরে স্ক্রোলভিউটি উল্লম্বভাবে এবং অনুভূমিকভাবে কেন্দ্র করুন কেন্দ্র স্ক্রোলভিউ
  4. ভিউ নির্বাচন করুন এবং তারপরে 'নিখোঁজ সীমাবদ্ধতাগুলি যুক্ত করুন' - এটি তার কাজটি করে
  5. ফলাফলটি হ'ল প্রচুর সীমাবদ্ধতা তৈরি হয়। দেখার জন্য 2 টি নতুন তৈরি করা হয়েছে: 'দেখার জন্য হোরিজ স্পেস স্ক্রোলভিউ' এবং 'দেখার জন্য ভার্ট স্পেস স্ক্রোলভিউ' বা তদ্বিপরীত।
  6. 'দেখার জন্য হোরিজ স্পেস স্ক্রোলভিউ' মুছুন যাতে আপনার এখন ভিউতে 3 টি বাধা রেখে যায়। দৃশ্যে স্ক্রোলভিউতে প্রবেশের জন্য 2 এবং স্ক্রোলভিউ এবং দর্শনের মধ্যে একটি উল্লম্ব স্থান নির্ধারণ করার জন্য
  7. এখন ক্লিক করে আপনার কোডের সাথে ভার্ট সীমাবদ্ধতাটি লিঙ্ক করুন এবং Ctrl এটিকে হেডার ফাইলটিতে টেনে এনে একটি NSLayoutConstraint IBOutlet তৈরি করুন (আমি খনি সীমাবদ্ধতা ভার্টভিটোএসভি বলেছি)
  8. এখন .m ফাইলে যান এবং কোডডির এই লাইনগুলি ভিউডিডলয়েডে যুক্ত করুন (সঠিক উল্লম্ব কেন্দ্রীকরণ পেতে প্যাডিংয়ের পরিমাণ দিয়ে খেলুন)

    if (IPAD)

    .c স্বতঃআপনিস্ট্র্যাটভিয়ার্টভিটোএসভিসিএনএসএন্ট = 150.0; }

  9. এটি এখন সমস্ত ডিভাইসে চালিত হওয়া উচিত এবং সঠিকভাবে কেন্দ্রিক হওয়া উচিত এবং এখনও সঠিকভাবে স্ক্রোল করা উচিত।


1

যদি আমার মতো হয় তবে আপনি কেবলমাত্র সাবউভিউয়ের অভ্যন্তরে কাউন্টারট্রেট ছাড়াই স্থির সামগ্রী ব্যবহার করুন, যেমন আপনি এটি করতে পারেন:

override func viewDidLayoutSubviews() {
    scrollView.contentSize = CGSizeMake(320, 800)
}

1

আইওএস 8.4, এক্সকোড 6.4 এর সাথে আমি আজ একই সমস্যায় পড়ছি

এখানে একটি ভিউ রয়েছে যাতে একটি স্ক্রোল ভিউ থাকে, এতে একটি সামগ্রীতে ভিউ (ইউআইভিউ) থাকে যার সাথে সাবউভিউ থাকে।

সবকিছু সর্বত্র অটো লেআউট। স্ক্রোলভিউ প্রান্তগুলি সীমাবদ্ধতার সাথে প্যারেন্ট ভিউ এজগুলিতে পিন করা হয়েছে। সামগ্রী দেখার প্রান্তগুলি সীমাবদ্ধতার সাথে স্ক্রোল ভিউ প্রান্তগুলিতে পিন করা হয়েছে।

মূলত কন্টেন্ট ভিউ স্ক্রোল ভিউয়ের সম্পূর্ণ প্রস্থ হিসাবে আকারটিকে প্রত্যাখ্যান করবে। প্যারেন্ট স্ক্রোল ভিউটির প্রস্থের সাথে এর প্রস্থের সাথে মিল রাখতে আমার কন্টেন্ট ভিউতে অতিরিক্ত বাধা যুক্ত করতে হয়েছিল। বা আমি একটি সামগ্রী ভিউ.সেন্টারএক্স == স্ক্রোলভিউ.সেন্টারএক্স সীমাবদ্ধ করতে পারি। যেগুলি কিনারা পিন করা ছাড়াও হঠাৎ করেই হ'ল কনটেন্ট ভিউটি সঠিক আকারে পরিণত করেছে।

// Either one of these additional constraints are required to get autolayout to correctly layout the contentView. Otherwise contentView size is its minimum required size
scrollView.addConstraint(NSLayoutConstraint(item: contentView, attribute: .CenterX, relatedBy: .Equal, toItem: scrollView, attribute: .CenterX, multiplier: 1.0, constant: 0))
scrollView.addConstraint(NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Width, relatedBy: .Equal, toItem: scrollView, attribute: .Width, multiplier: 1.0, constant: 0.0))

ফর্মের ভিজ্যুয়াল সীমাবদ্ধতাগুলি ব্যবহার করে কন্টেন্ট ভিউয়ের প্রান্তগুলি স্ক্রোল ভিউতে পিন করা,

let cvConstraints = ["H:|[contentView]|", "V:|[contentView]|"]

অ্যারের মাধ্যমে পুনরাবৃত্তি করতে এবং এগুলি স্ক্রোলভিউতে যুক্ত করতে আমি একটি রুটিন ব্যবহার করি।


1

আমিও একই ধরণের সমস্যার মুখোমুখি হয়েছি। আমি প্রতিটি প্রতিবন্ধকতা সেট করেছিলাম এবং কেন এটি এখনও কিছু সংক্ষিপ্তসারগুলিকে আকার দেয় তা সবসময় ভাবছিলাম। আমার সমাধানটি হ'ল ক্লিপসবাউন্ডগুলি হ্যাঁ সেট করা।


1

ইন দ্রুতগতি আপনি এই কাজ সমাধান ব্যবহার করতে পারেন।

Contraints

ScrollView: শীর্ষস্থানীয়, শীর্ষস্থানীয়, শীর্ষ, নীচে = তত্ত্বাবধান

ContentView: শীর্ষস্থানীয়, অনুগামী, শীর্ষ, নীচে = স্ক্রোলভিউ। উচ্চতা স্থির / সামগ্রীর সাথে আপেক্ষিক।

আপনি সমান স্ক্রোলভিউ সুপারভিউতে প্রস্থের সীমাবদ্ধতা (কন্টেন্টভিউ) সেট করতে পারেন তবে বিল্ড টাইম এ রিমুভ অপশনটি নির্বাচন করুন কারণ আপনি প্রোগ্রামটিমে সেই সীমাবদ্ধতা যুক্ত করবেন। এটি ঠিক তাই আইবি সতর্কতার সাথে অভিযোগ না করে।

extension UIView {

    func setupContentViewForViewWithScroll(contentView vwContent : UIView) {
        //Set constraint for scrollview content
        let constraint = NSLayoutConstraint(item: vwContent, attribute: NSLayoutAttribute.Width, relatedBy: .Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: self.bounds.size.width)
        vwContent.addConstraint(constraint)
        self.layoutSubviews()
    }

}

এবং ভিউ কন্ট্রোলারে viewDidLayoutSubviewsআমি কেবল এই পদ্ধতিটি কল করি:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.view.setupContentViewForViewWithScroll(contentView: vwContent)
}

0

আমি জানি এটি একটি সাধারণ লোকের সমাধান এবং অ্যাপল নথিতে যা পরামর্শ দেয় তা নয়, তবে এটি আমার জন্য দু'বার কাজ করেছিল, বিভিন্ন সামগ্রী সহ এবং খুব তাড়াতাড়ি সেট আপ করা যায়: স্টোরিবোর্ডে ভিউ কন্ট্রোলারটি ইউআইভিউউ sertোকান। ইউআইভিউতে একটি সারণী দেখুন, গতিশীল, 0 প্রোটোটাইপ সেল, স্টাইল সমতল বা গোষ্ঠীযুক্ত sertোকান। টেবিল ভিউতে একটি স্ক্রোল ভিউ sertোকান, স্ক্রোল ভিউতে সামগ্রী contentোকান। এটি স্থায়ী, কাস্টম ভিউ নিয়ন্ত্রকের কোনও সেটিংস নেই।

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