ইন্টারফেস বিল্ডারে আমি কীভাবে ইউআইএসক্রোলভিউ ব্যবহার করব?


95

যদিও আমি UIScrollViewঅতীতে সফলভাবে প্রোগ্রামটিমেটিকভাবে ব্যবহার করে ব্যবহার করেছি, ইন্টারফেস বিল্ডারে একচেটিয়াভাবে সেটআপ করে এটি কাজ করতে আমার সমস্যা হচ্ছে।

আমার আইফোন অ্যাপে আমার একটি সাধারণ "সম্পর্কে" পৃষ্ঠা রয়েছে। UITextViewএটিতে একটি , কিছু আইকন রয়েছে এবং আমার অন্যান্য অ্যাপ্লিকেশনগুলির লিঙ্ক রয়েছে। আমি এই ভিউগুলিকে আমার সাথে যুক্ত করেছিUIScrollView ভিউগুলিকে , যাতে তাদের মোট আকার> 480 হয়। আমি যখন আমার অ্যাপ্লিকেশন চালু করি তখন স্ক্রোলভিউ কেবলমাত্র সেই বিষয়বস্তুগুলিকে প্রদর্শন করে যা স্ক্রিনে ফিট করে এবং কিছুই স্ক্রল করে না।

আইবিয়ের মাধ্যমে এটি পুরোপুরি করা সম্ভব, বা কোডের মাধ্যমে আমার কি কনটেন্টসাইজ ম্যানিপুলেট করা উচিত?

উত্তর:


130

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


42
বাহ, এক ধরণের আইবিকে বরং অর্থহীন করে তোলে ... ধন্যবাদ, ধন্যবাদ এটি কৌশলটি করেছে।
জর্জ আর্মহোল্ড

20
আপনি ইউআইএসক্রোলভিউ ভিউয়ের একটি সাবক্লাস তৈরি করতে পারেন যা (0,0) এ কেবল একটি সাবউভিউ আছে কিনা তা পরীক্ষা করে এবং তারপরে স্বয়ংক্রিয়ভাবে সেই সাবভিউয়ের উপর ভিত্তি করে কন্টেন্টসাইজ সেট করে।
স্টিফান আরেঞ্জz

4
এটি কিছুক্ষণের মধ্যে আমি পেয়েছি সেরা পরামর্শ। আমার স্ক্রোল দর্শনটি কেন কাজ করে না তা আমি বুঝতে পারি না এবং কন্টেন্টসাইজ সম্পর্কিত তথ্য অন্য কোথাও পাইনি। ধন্যবাদ
ড্র সি সি

46
আমি কীভাবে ইন্টারফেস বিল্ডারে কন্টেন্টসাইজ সেট করবেন তা নির্ধারণ করার চেষ্টা করছিলাম এবং এই আলোচনাটি খুঁজে পেলাম। কমপক্ষে আমার জন্য, এক্সকোড ৪.৫ এ, আমি এটি "ব্যবহারকারীর সংজ্ঞায়িত রানটাইম অ্যাট্রিবিউটস" ব্যবহার করে contentSizeটাইপের নামের একটি এন্ট্রি যুক্ত Sizeকরে এবং পছন্দসই মান সেট করে সেট করতে পারি।
nlogax

4
আমি এখনও কমপক্ষে ডিফল্ট আচরণ হিসাবে তার সাবভিউয়ের মাত্রাগুলির উপর ভিত্তি করে আইওএস স্বয়ংক্রিয়ভাবে contentSizeকোনও স্ক্রোল-ভিউ সেট আপ না করে সে সম্পর্কে আমি এখনও বিস্মিত হই
আরথ

113

ববি_ওয়ানের উত্তরটি আমাকে ভাবতে পেরেছিল এবং আমি ইউআইএসক্রলভিউয়ের সামগ্রীসূচি ইন্টারফেস বিল্ডার থেকে কনফিগার করার জন্য নিম্নলিখিত সমাধানটি পেয়েছি:

  1. UIScrollViewস্টোরিবোর্ডের দৃশ্যে নির্বাচন করুন
  2. পরিচয় পরিদর্শকের কাছে যান , একটি নতুন ব্যবহারকারী সংজ্ঞায়িত রানটাইম অ্যাট্রিবিউট তৈরি করুন (+ বোতামটি ক্লিক করুন)
  3. বৈশিষ্ট্য পরিবর্তন র পাথ থেকেcontentSize
  4. পরিবর্তন অ্যাট্রিবিউট প্রকার করারSize
  5. Now সেট মূল্য করতে { আকাঙ্ক্ষিত সামগ্রীর প্রস্থ , পছন্দসই বিষয়বস্তু উচ্চতা }

উদাহরণস্বরূপ {320, 920 to এ মান সেট করা ব্যবহারকারীর আইফোনটিতে পুরো অতিরিক্ত স্ক্রিনটি স্ক্রোল করতে দেয়।

(আমি এক্সকোড ৪.৩.৩ ব্যবহার করছি, প্রকল্পের আইওএস ডিপ্লোয়মেন্ট টার্গেট ৫.১)

আমি প্রথম যখন এটি করলাম তখন আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

অবৈধ কনফিগারেশন:
     সাইজের ধরণের ব্যবহারকারীর সংজ্ঞায়িত রানটাইম বৈশিষ্ট্যগুলি ৪.৩
     মেইনস্টিরিবোর্ড.স্টোরবোর্ডের পূর্বে এক্সকোড সংস্করণ সহ

আপনি যদি এই ত্রুটিটি পান তবে এটি ঠিক করা সহজ: প্রকল্প নেভিগেটরে স্টোরিবোর্ডটি নির্বাচন করুন এবং ফাইল পরিদর্শককে সামনে আনুন । ইন্টারফেস বিল্ডার ডকুমেন্ট বিভাগটি সন্ধান করুন / প্রসারিত করুন এবং উন্নয়নের জন্য একটি ড্রপ ডাউন রয়েছে । এটি সেট করা আছে তা নিশ্চিত করুনXcode 4.3


7
অসাধারণ সন্ধান! পিএস: আমি হতবাক যে অ্যাপল এটি করতে পারে সেরা। আমি অনুমান করি যে এটি দেখায় যে এমনকি অ্যাপল কর্মীরা কখনও তাদের নিজস্ব সরঞ্জাম (ইন্টারফেস বিল্ডার) ব্যবহার করেন না :)।
আদম

উজ্জ্বল, এটি সবেমাত্র Xcode 4.4 এ আমার জন্য কাজ করেছে। তবে এখন আমি আইবিতে "দেখতে" পারছি না এমন স্ক্রোল ভিউয়ের অংশে কীভাবে বোতামগুলি রাখব?
রবার্ট অ্যাটকিনস

4
আমি সবেমাত্র এটির কাজ করেছি the পয়েন্টারটি এখনও "স্ক্রিন" এর ভিতরে থাকা অবস্থায় আপনাকে ড্র্যাগটি ছেড়ে দিতে হবে, অন্যথায় আপনি যখন শুরু করেছিলেন তখন এটি আবার ফিরে যাবে। কি যে ব্যথা.
রবার্ট অ্যাটকিনস

আমি সেভাবে চেষ্টা করেছিলাম তবে আমি একটি ত্রুটি পাচ্ছি "this class is not key value coding-compliant for the key keyPath"আপনি কি দয়া করে আমাকে সাহায্য করতে পারেন আমি কী ভুল করছি? দয়া করে মনে রাখবেন যে আমি xamarin-ios-c #
সফটসান

25

অটোলেআউট (আইওএস 6 +) এর সাহায্যে আপনি সেটিংস এড়াতে পারবেন contentSize। পরিবর্তে নিম্নলিখিত সীমাবদ্ধতা সেট করুন:

  1. স্ক্রোলভিউয়ের শীর্ষে তার সর্বোচ্চ-সন্তানের শীর্ষে পিন করুন।
  2. এবং নীচের অংশটিকে নীচের অংশে সবচেয়ে নীচের শিশুটিকে পিন করুন।

4
আপনাকে ধন্যবাদ - সেটিংস contentSize
এক্সকোড

18

আপনি এটি কেবল ইন্টারফেস বিল্ডার ব্যবহার করে করতে পারেন, পরিচয় পরিদর্শক (তৃতীয় পরিদর্শক ট্যাব) এ যান এবং এর সাথে একটি নতুন ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য যুক্ত করতে পারেন

  • মূল পথ: কন্টেন্টসাইজ
  • প্রকার: আকার
  • মান: {প্রস্থ, উচ্চতা

14

এখন UIScrollViewনা রেখে একটি স্ক্রোল তৈরির উপায় রয়েছেস্টোরিবোর্ড :

  1. UIScrollViewস্টোরিবোর্ডে নির্বাচন করুন , আকার পরিদর্শকের কাছে যান এবং নীচে পরিবর্তন করুন সামগ্রীর ইনসেট বিভাগের নীচের অংশের নীচের অংশের নীচের অংশে মানটি (বা আপনার অন্য যে কোনও মান পরিবর্তন করতে হবে) পরিবর্তন করুন ।
  2. এখন পরিচয় পরিদর্শকের কাছে যান এবং একটি নতুন ব্যবহারকারী সংজ্ঞায়িত রানটাইম অ্যাট্রিবিউট তৈরি করুন (+ বোতামটি ক্লিক করে) এবং নামটি দিন contentSize। কি টাইপ বা এটি কিছু যায় আসে না মূল্য আপনি পূরণ (আপনি এমনকি তাদের ডিফল্ট মান চলে যাবে)।

এটি UIScrollViewকাজটি ঠিকঠাক করে তুলবে , যদিও আমি জানি না কেন দ্বিতীয় ধাপটি প্রয়োজনীয় (আমি সুযোগ দ্বারা খুঁজে পেয়েছি)। :(


নীচের মানটি কী পরিবর্তন করবেন?
জাকদানস

বিষয়বস্তুর ক্ষেত্রের উচ্চতায় এটি পরিবর্তন করুন। এটি কাজ করে বলে মনে হচ্ছে এবং আপনি ব্যবহারকারী-সংজ্ঞায়িত "কন্টেন্টসাইজ" বৈশিষ্ট্যের জন্য সরবরাহ করা মানটিকে ওভাররাইড করে।
রিড এলিস

হ্যাঁ, রেড, আপনি ঠিক বলেছেন: আপনার নীচের মানটি সামগ্রীর ক্ষেত্রের উচ্চতায় পরিবর্তন করা উচিত। এটি প্রতিফলিত করার জন্য আমি আমার মূল পোস্টটি সম্পাদনা করেছি। ধন্যবাদ!
রবারআরএম

4

আমি অতীতে একটি পন্থা ব্যবহার করেছি এটি হল ইন্টারফেস বিল্ডারের মধ্যে থাকা ভিউ রয়েছে এর বাইরে স্ক্রোলভিউটি টেনে আনুন এবং কন্টেন্টসাইজটি কী হতে চান তার প্রকৃত আকার সেট করুন।

ইন্টারফেস বিল্ডার সম্পর্কে যা অন্তর্নিহিতভাবে স্পষ্ট নয় তা হ'ল আপনি নিব মধ্যে সঞ্চিত এমন অপ্রচলিত দৃষ্টিভঙ্গি রাখতে পারেন, তবে নীবটি মূল দৃষ্টিভঙ্গির মূল অংশ নয়।

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

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

রানটাইম এ, ইন - (অকার্যকর) ভিউডিডলোড

scrollView.contentSize = scrollView.frame.size;
scrollView.frame = placeholder.frame;
[placeholder.superview addSubView:scrollView];
[placeholder removeFromSuperview];

বিকল্পভাবে (যদি আপনি কোনও স্থানধারক ব্যবহার না করেন):

CGRect f = self.view.frame;
scrollView.contentSize = f.size;
f.origin.x = 0;
f.origin.y = 0;
scrollView.frame = f;
[self.view addSubView:scrollView];

অবশেষে, আপনি যদি ইন্টারফেস বিল্ডারে আপনার স্ক্রোল ভিউটি "হারাতে" পারেন (এটি বন্ধ করা সম্ভব তাই এটি ডিজাইনের গ্রিড থেকে অদৃশ্য হয়ে যায়), আতঙ্কিত হবেন না। ডিজাইন গ্রিডের বাম দিকে কেবল অবজেক্ট তালিকায় এটিতে ক্লিক করুন।


4
ধন্যবাদ - এটি ভাল কাজ করেছে। স্থানধারক এবং স্ক্রোল দর্শনগুলির জন্য আপনার ভিউকন্ট্রোল.আর আইবিআউটলেটগুলি ঘোষণা করতে হবে এবং সেগুলি ইন্টারফেস বিল্ডারে সংযুক্ত করতে হবে। এবং সর্বশেষে, ডট.নোটেশনটি তৃতীয় লাইনের জন্য এক্সকোড দ্বারা প্রশংসা করা হয়নি, সুতরাং ব্যবহৃত সাধারণ বার্তাটি সিনট্যাক্স প্রেরণ করুন - তারপরে সবকিছু দুর্দান্ত কাজ করেছিল!
জিআই

কোন চিন্তা করো না. কোড স্নিপেটগুলি পোস্ট করার ক্ষেত্রে সর্বদা একটি বিপদ থাকে যে কিছু পরিস্থিতিতে প্রতিটি পরিস্থিতিতে "সঠিক" কোডটি কাজ করার প্রত্যাশা না করে ধারণাটি পেতে তাদের ব্যবহার করতে পারবেন না।
শে

এই পদ্ধতিটি আমি আসলে ব্যবহার করি। এমনকি আমি এই প্রোগ্রামটি পুনরায় আকার দেওয়ার দরকার নেই। আমি মনে করি এটি এটি করার উদ্দেশ্যে way এটিই সঠিক উত্তর।
user4951

এটি বাইরে আঁকার পরে, আমি কেবল এটি সুপার ভিউতে স্থানান্তর করব। তদা।
user4951

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

4

এক্সকোড ৪.৪ এ অটোলেআউট ব্যবহার করে আমার আকার পরিদর্শকের কোনও সামগ্রী ইনসেট বিভাগ নেই। সুতরাং আমি এটি ব্যবহারকারীর সংজ্ঞায়িত রানটাইম বৈশিষ্ট্যের অধীনে যুক্ত করতে হয়েছিল এবং তারপরে এটি দুর্দান্ত কাজ করে।

আপনি "ব্যবহারকারী সংজ্ঞায়িত রানটাইম অ্যাট্রিবিউটস" এ যা যুক্ত করেন তা হ'ল কীপথ == বিষয়বস্তু ইনসেট যা "রেক্ট" (UIEdgeInsets, যা রেক্ট হিসাবে একই ইনপুট রয়েছে) টাইপ এবং {শীর্ষ, বাম}, {নীচে, ডান} হিসাবে সংজ্ঞায়িত করা হয়} কন্টেন্টসাইজ কেবল স্ক্রোলভিউ উইন্ডোর অঞ্চলটি সংজ্ঞায়িত করে। কন্টেন্টইনসেট স্ক্রোলযোগ্য অঞ্চলটি সংজ্ঞায়িত করে।

আমি আশা করি এটি একই পরিস্থিতিতে কাউকে সহায়তা করে।


ইউআইটিেক্সটভিউয়ের জন্য "টেক্সট কনটেনারইনেসেট" কীপথ ব্যবহার করুন
ডিমা ডিপ্লোভ

4

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

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

এটি এর মতো চিন্তা করুন - একটি স্ক্রোলভিউয়ের জন্য সীমাবদ্ধতাগুলির মধ্যে একটি অসামঞ্জস্যতা রয়েছে: স্ক্রোলভিউ থেকে "বাইরের" (পিতামাতার) বিশ্বের প্রতিবন্ধকতাগুলি যথারীতি স্ক্রোলভিউয়ের আকার এবং অবস্থান নির্ধারণ করে। তবে স্ক্রোলভিউয়ের "ভিতরে" সীমাবদ্ধতাগুলি বিষয়বস্তুতে আবদ্ধ করে স্ক্রোলভিউয়ের স্ক্রোলযোগ্য ক্ষেত্রের আকার এবং অবস্থানটি সত্যই সেট করছে।

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

আমি দুর্ঘটনাক্রমে এটিকে হোঁচট খেয়েছি এবং তারপরে এটি কীভাবে কাজ করছে তা দেখে আমাকে এই নিবন্ধের দিকে নিয়ে যায় যা এটি সম্পূর্ণরূপে ব্যাখ্যা করে এবং এর জন্য অ্যাপল ডক্স উত্সটি উদ্ধৃত করে:

https://spin.atomicobject.com/2014/03/05/uiscrolview-autolayout-ios/

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


2

আপনি যদি ইন্টারফেস বিল্ডারের যে কোনও ভিউ কন্ট্রোলারের প্রোপার্টি আইকনে ক্লিক করেন তবে আপনি এটিকে সিমুলেটেড মেট্রিক্সে একটি "ফ্রিফর্ম" আকারে সেট করতে পারেন এবং আপনার পছন্দসই সামগ্রীর আকার হতে প্রধান দৃশ্যের আকার পরিবর্তন করতে পারেন।

এইভাবে আপনি আপনার স্ক্রোলভিউয়ের সামগ্রীটি তৈরি করতে পারবেন যেন এটি এক বিশাল দর্শন। এটি কেবলমাত্র একটি সিমুলেটেড মেট্রিক হিসাবে আপনার ভিউ কন্ট্রোলারটি লোড হওয়ার পরে উইন্ডোটির সীমানায় পুনরায় আকার দেওয়া হবে।


2

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

  1. ইউআইভিউকন্ট্রোলারের এক্সআইবি ফাইলটি নির্বাচন করুন। ইন্টারফেস বিল্ডারের "আইডেন্টিটি ইন্সপেক্টর" -তে, ইউআইভিউভকে শ্রেণীর ধরণের ইউআইএসক্রোলভিউতে পরিবর্তন করুন

  2. "ফাইল ইন্সপেক্টর" এর অধীনে, অটোলেআউটটি চেক করুন

  3. "অ্যাট্রিবিউটস ইন্সপেক্টর" এর অধীনে আকারটি ফ্রিফোমে পরিবর্তন করুন। এরপরে আপনি নিজে হাতে স্ক্রোল ভিউ প্রসারিত করতে পারেন বা "আকার পরিদর্শক" এর অধীনে একটি কাস্টম প্রস্থ এবং উচ্চতা নির্দিষ্ট করতে পারেন।

  4. "সনাক্তকারী পরিদর্শক" এ, "আকার" টাইপের "কন্টেন্টসাইজ" নামে একটি নতুন ব্যবহারকারী সংজ্ঞায়িত রানটাইম অ্যাট্রিবিউট যুক্ত করুন এবং এটিকে 20 320, 1000} এর মতো মানে পরিবর্তন করুন} আপনি এই প্রোগ্রামটিমেটিকভাবে আর সেট করতে পারবেন না এবং তাই এই পদক্ষেপের প্রয়োজন যাতে স্ক্রোল ভিউটি জানতে পারে যে স্ক্রোল ভিউয়ের সামগ্রীগুলি উইন্ডোর চেয়ে বড়।


2

আপনার স্ক্রোলভিউতে স্বতঃআলিআউটটি সরিয়ে দিন। তারপরে কোডটি এর মতো সহজ:

scrollviewName.contentSize = CGSizeMake(0, 650);

.h ফাইলে একটি আইবুলেট সম্পত্তি তৈরি করুন তারপরে .m ফাইলটিতে সংশ্লেষ করুন। নিশ্চিত করুন যে স্ক্রোলিং সক্ষম হয়েছে।


1

হ্যাঁ, st3fan ঠিক আছে, ইউআইএসক্রোলভিউয়ের সামগ্রীসাইজ সম্পত্তি সেট করা আবশ্যক। তবে এই উদ্দেশ্যে আপনার অটোলেট বন্ধ করা উচিত নয়। আপনি সহজেই কোনও কোড ছাড়াই কেবল আইবিতে অটোলেআউট দিয়ে ইউআইএসক্রোলভিউয়ের সামগ্রী সেটআপ করতে পারেন।

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

উদাহরণস্বরূপ, যদি আপনার কেবলমাত্র একটি মতামত থাকে তবে আপনি শীর্ষ এবং নীচ থেকে সুপারভিউতে (যেমন আমাদের ক্ষেত্রে স্ক্রোলভিউ) এর উচ্চতা এবং স্থান নির্ধারণ করতে পারেন বিষয়বস্তুর আকার he উচ্চতা সমষ্টি হিসাবে গণনা করা হয়

Vertical Space (aSubview.top to Superview.top) + aSubview.height + Vertical Space (aSubview.top to Superview.top)

ContentSize.width অনুভূমিক সীমাবদ্ধতা থেকে একইভাবে গণনা করা হয়।

কনটেন্ট সাইজ করতে খুব কম বাধা থাকলে সঠিকভাবে ছোট লাল বোতামটি লেআউট अस्पष्टতা সম্পর্কে অবহিত করার জন্য ভিউ কন্ট্রোলার দৃশ্যের আইটেমের কাছে দেখানো হয়।

যদি অনেকগুলি মতামত থাকে তবে এটি সীমাবদ্ধতার "শৃঙ্খলা" হতে পারে: দানিয়াল আয়টেকিন উত্তরের মতো নীচে থেকে নীচে থেকে নীচের দিকে সাবভিউ এবং নীচের দিকের সাবভিউয়ের মধ্যে উচ্চতা এবং ফাঁকা স্থান ।

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

স্ক্রোলভিউ স্ক্রোলযোগ্য গণনাযোগ্য সামগ্রী তৈরি করতে সাইজটি অবশ্যই স্ক্রোলভিউ আকারের চেয়ে বড় হতে হবে।


1

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

  1. ইউআইএসক্রোলভিউ যুক্ত করুন
  2. এতে সমস্ত সীমাবদ্ধতা যুক্ত করুন (উপরে, বাম, ডান, নীচে প্রান্তগুলি থেকে ইনসেটগুলি)
  3. ইউআইএসক্রোলভিউতে একটি 'ধারক' ইউআইভিউ যুক্ত করুন
  4. আপনি যদি কেবল এক-দিকের স্ক্রোল চান (বলুন, উল্লম্ব): উচ্চতা সুস্পষ্টভাবে সেট করুন (উদাহরণস্বরূপ, 600) এবং ইউআইএসক্রোলভিউয়ের প্রস্থের সাথে প্রস্থের লিঙ্ক করুন।
  5. আপনি যদি দ্বি-দিকীয় স্ক্রোল চান তবে কেবল প্রস্থ এবং উচ্চতা উভয়ই সেট করুন।

স্টোরিবোর্ড সেটআপ


0

সম্পূর্ণ স্টোরিবোর্ডে স্ক্রিনের চেয়ে বড় সামগ্রীর সাথে স্ক্রোলভিউ ডিজাইনের একটি সমাধান রয়েছে (ভাল, প্রায় পুরোপুরি, আপনাকে কোডের একটি একক লাইনও যুক্ত করতে হবে)

https://stackoverflow.com/a/19476991/1869369


0

আমি একটি আরও সুবিধাজনক উপায় খুঁজে।

1: এর ভিতরে থাকা সমস্ত ইউআই রাখতে স্ক্রোল ভিউটির আকার স্কেল করুন।

2: স্ক্রোল ভিউয়ের একটি আইবলেটলেট যুক্ত করুন।

3: ViewDidLoad এ, স্ক্রোল দর্শনের ফ্রেম.সাইজ সংরক্ষণ করুন।
(যেমন _ স্ক্রোলসাইজ = _স্ক্রোলভিউ.ফ্রেম.সাইজ;)

4: ভিউউইলঅ্যাপিয়ারে, আপনি সংরক্ষণ করা আগে সিজি সাইজের দ্বারা বিষয়বস্তু আকার সেট করুন।
(যেমন _ স্ক্রোলভিউ.কন্টেন্টসাইজ = _ স্ক্রোলসাইজ;)

5: সম্পন্ন ~ ~


0
  1. ইউআইভিউউকন্ট্রোলার যুক্ত করুন
  2. ইউআইভিউউকন্ট্রোলারে 'অ্যাট্রিবিউট ইন্সপেক্টর -> সিমুলেটেড মেট্রিক্স' সেট আকার ফ্রিফর্ম
  3. ইউআইভিউউকন্ট্রোলারে 'আকার পরিদর্শক -> দেখুন নিয়ন্ত্রক' সেট উচ্চতা 800
  4. ইউআইভিউকন্ট্রোলারে ইউআইএসক্রোলভিউ যুক্ত করুন
  5. ইউআইএসক্রোলভিউতে সমস্ত সীমাবদ্ধতা যুক্ত করুন (শীর্ষ, বাম, ডান, নীচে) এবং প্রান্তিককরণ যুক্ত করুন এক্স = কেন্দ্র
  6. ইউআইএসক্রোলভিউতে ইউআইভিউ যুক্ত করুন
  7. ইউআইভিউতে সমস্ত শীর্ষ বাধা যুক্ত করুন (উপরে, বাম, ডান, নীচে) এবং প্রান্তিককরণ যুক্ত করুন এক্স = কেন্দ্র। হ্যাঁ, # 3-এ ইউআইএসক্রোলভিউর মতো, তবে ইউআইভিউয়ের জন্য
  8. ইউআইভিউতে উচ্চতার সীমাবদ্ধতা যুক্ত করুন। উদাহরণস্বরূপ 780
  9. চালান

স্টোরিবোর্ড


0

একটি নতুন এক্সকোড প্রকল্প তৈরি করুন

মেইন.স্টরিবোর্ড ফাইলটিতে নেভিগেট করুন

বস্তুর পাঠাগার থেকে স্ক্রোলভিউ নির্বাচন করুন।

স্ক্রোলভিউয়ের জন্য ফ্রেম সেট করুন।

স্ক্রোল ভিউতে অন্য ভিউ যুক্ত করুন এবং ফ্রেমটিকে স্ক্রোলভিউয়ের মতো রাখুন।

এখন এর উচ্চতা এবং প্রস্থকে গতিশীলভাবে সেট করতে আপনি এটি XIB এ অটো লেআউট ব্যবহার করে একটি ইউআইএসক্রোলভিউ কনফিগার করতে পারেন

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