ধরা যাক আমি ইউআইএসট্যাকভিউতে আরও ভিউ যুক্ত করেছি যা প্রদর্শিত হতে পারে, আমি কীভাবে UIStackView
স্ক্রোলটি তৈরি করতে পারি ?
ধরা যাক আমি ইউআইএসট্যাকভিউতে আরও ভিউ যুক্ত করেছি যা প্রদর্শিত হতে পারে, আমি কীভাবে UIStackView
স্ক্রোলটি তৈরি করতে পারি ?
উত্তর:
যদি কেউ কোড ছাড়াই সমাধান খুঁজছেন , অটো লেআউট ব্যবহার করে স্টোরিবোর্ডে এটি পুরোপুরি করার জন্য আমি একটি উদাহরণ তৈরি করেছি।
আপনি এটি গিথুব থেকে পেতে পারেন ।
মূলত, উদাহরণটি পুনরায় তৈরি করতে (উল্লম্ব স্ক্রোলিংয়ের জন্য):
UIScrollView
এবং তার সীমাবদ্ধতাগুলি সেট করুন ।UIStackView
করুনUIScrollView
Leading
, Trailing
, Top
& Bottom
থেকে বেশী সমান হওয়া উচিতUIScrollView
Width
মধ্যে সমান সীমাবদ্ধতা সেট আপ করুন ।UIStackView
UIScrollView
UIStackView
UIViews
করুনUIStackView
এক্সচেঞ্জ Width
জন্য Height
পদক্ষেপ 4, এবং সেট Axis
= Horizontal
পদক্ষেপ 5, একটি অনুভূমিক UIStackView জন্য।
অ্যাপলের অটো লেআউট গাইড সহ স্ক্রোল দর্শনগুলির সাথে কাজ করার একটি সম্পূর্ণ বিভাগ অন্তর্ভুক্ত । কিছু প্রাসঙ্গিক স্নিপেটস:
- স্ক্রোল ভিউয়ের সম্পর্কিত প্রান্তগুলিতে সামগ্রী ভিউয়ের শীর্ষ, নীচে, শীর্ষস্থানীয় এবং পিছনের প্রান্তগুলিকে পিন করুন। বিষয়বস্তু দর্শন এখন স্ক্রোল দর্শনের সামগ্রীর ক্ষেত্রের সংজ্ঞা দেয়।
- (Alচ্ছিক) অনুভূমিক স্ক্রোলিং অক্ষম করতে, সামগ্রী স্কোরলটির প্রস্থকে স্ক্রোল দর্শনের প্রস্থের সমান করুন। সামগ্রীর দর্শন এখন অনুভূমিকভাবে স্ক্রোল ভিউ পূরণ করে।
- (Alচ্ছিক) উল্লম্ব স্ক্রোলিং অক্ষম করতে, সামগ্রী স্ক্রোল দেখার উচ্চতার সমান কন্টেন্ট ভিউয়ের উচ্চতা সেট করুন। সামগ্রীর দর্শন এখন অনুভূমিকভাবে স্ক্রোল ভিউ পূরণ করে।
উপরন্তু:
আপনার বিন্যাসে অবশ্যই সামগ্রীর ভিউয়ের আকারটি পুরোপুরি সংজ্ঞায়িত করতে হবে (5 এবং 6 ধাপে সংজ্ঞায়িত ব্যতীত)। … যখন সামগ্রী ভিউ স্ক্রোল ভিউয়ের চেয়ে লম্বা হয়, তখন স্ক্রোল ভিউ উল্লম্ব স্ক্রোলিং সক্ষম করে। কন্টেন্ট ভিউ যখন স্ক্রোল ভিউয়ের চেয়ে প্রশস্ত হয় তখন স্ক্রোল ভিউ অনুভূমিক স্ক্রোলিং সক্ষম করে।
সংক্ষিপ্তসার হিসাবে, স্ক্রোল ভিউ এর সামগ্রী দর্শন (এই ক্ষেত্রে, একটি স্ট্যাক ভিউ) অবশ্যই তার প্রান্তগুলিতে পিন করা উচিত এবং এর প্রস্থ এবং / বা উচ্চতা অন্যথায় সীমাবদ্ধ থাকতে হবে। এর অর্থ হ'ল স্ট্যাক ভিউয়ের বিষয়বস্তুগুলি অবশ্যই (সরাসরি বা অপ্রত্যক্ষভাবে) যে দিকে স্ক্রোলিংয়ের জন্য পছন্দসই, সেগুলির আবদ্ধ হওয়া আবশ্যক, উদাহরণস্বরূপ, উল্লম্বভাবে স্ক্রোলিং স্ট্যাক ভিউয়ের অভ্যন্তরে প্রতিটি দৃশ্যে একটি উচ্চতার বাধা যুক্ত করা যেতে পারে। নীচে স্ট্যাক ভিউযুক্ত স্ক্রোল ভিউটির উল্লম্ব স্ক্রোলিংয়ের জন্য কীভাবে অনুমতি দেওয়া যায় তার একটি উদাহরণ রয়েছে:
// Pin the edges of the stack view to the edges of the scroll view that contains it
stackView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
stackView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true
stackView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
// Set the width of the stack view to the width of the scroll view for vertical scrolling
stackView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
Need constraints for: Y position or height.
আপনি যদি স্ট্যাক ভিউর জন্য প্রস্থ এবং উচ্চতা উভয়ই সীমাবদ্ধ করেন, তবে উল্লম্ব স্ক্রোলিং অক্ষম করে তবেই এই ত্রুটিটি চলে যায়। এই কোডটি এখনও আপনার জন্য কাজ করে?
এখানে শীর্ষে ভোট দেওয়া উত্তরের সীমাবদ্ধতাগুলি আমার জন্য কাজ করেছে এবং আমার স্টোরিবোর্ডে তৈরি করা হয়েছে, আমি নীচের সীমাবদ্ধতার চিত্রটি আটকিয়েছি।
আমি দুটি বিষয়ে হিট করেছি যদিও অন্যদের সম্পর্কে সচেতন হওয়া উচিত:
গৃহীত উত্তরের মতো সীমাবদ্ধতা যুক্ত করার পরে, আমি লাল অটোলেআউট ত্রুটি পেয়ে যাব Need constraints for: X position or width
। এটি স্ট্যাক ভিউর একটি সংক্ষিপ্তসার হিসাবে একটি ইউআইএলবেল যোগ করে সমাধান করা হয়েছিল।
আমি প্রোগ্রামগুলি সাবভিউগুলি যুক্ত করছি, সুতরাং মূলত স্টোরিবোর্ডে আমার কোনও পূর্বরূপ ছিল না। অটোলেআউট ত্রুটিগুলি থেকে মুক্তি পেতে স্টোরিবোর্ডে একটি সংক্ষিপ্তসার যুক্ত করুন, তারপরে আপনার আসল মতামত এবং সীমাবদ্ধতাগুলি যুক্ত করার আগে লোডে এটিকে সরান।
আমি মূলত UIButtons
ইউআইএসট্যাকভিউতে যুক্ত করার চেষ্টা করেছি। বোতাম এবং দর্শনগুলি লোড হবে তবে স্ক্রোল ভিউ স্ক্রোল করবে না । এটি UILabels
বোতামগুলির পরিবর্তে স্ট্যাক ভিউতে যুক্ত করে সমাধান করা হয়েছিল । একই সীমাবদ্ধতাগুলি ব্যবহার করে, ইউআইএলবেলস স্ক্রোলগুলির সাথে এই দৃষ্টিভঙ্গি শ্রেণিবিন্যাস করলেও ইউআইবাটনগুলি তা করে না।
আমি এই বিষয়টি দ্বারা বিভ্রান্ত করছি যেমন UIButtons না একটি IntrinsicContentSize (স্ট্যাক দর্শন দ্বারা ব্যবহৃত) আছে বলে মনে হচ্ছে। যদি কেউ জানেন যে কেন বোতামগুলি কাজ করে না, আমি কেন তা জানতে পছন্দ করব।
রেফারেন্সের জন্য এখানে আমার দর্শন শ্রেণিবদ্ধতা এবং সীমাবদ্ধতা রয়েছে:
যেমন এক বলেছেন, UIStackView
এবং UIScrollView
একসাথে সুন্দর খেলুন, এখানে দেখুন ।
মূলটি হ'ল UIStackView
বিভিন্ন বিষয়বস্তুর জন্য পরিবর্তনশীল উচ্চতা / প্রস্থকে পরিচালনা করে এবং UIScrollView
তারপরে সেই বিষয়টিকে স্ক্রোলিং / বাউন্স করা ভালভাবে করে:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.contentSize = CGSize(width: stackView.frame.width, height: stackView.frame.height)
}
আমি একই কাজ করতে চেয়েছিলাম এবং এই দুর্দান্ত পোস্টে হোঁচট খেয়েছি। আপনি যদি অ্যাঙ্কর এপিআই ব্যবহার করে এই প্রোগ্রামটিমেটিকভাবে করতে চান তবে এই পথেই।
সংক্ষিপ্ত বিবরণ, আপনার এম্বেড UIStackView
এবং UIScrollView
এর UIStackView
সাথে মিলে যাওয়ার অ্যাঙ্কর সীমাবদ্ধতাগুলি সেট করুন UIScrollView
:
stackView.leadingAnchor.constraintEqualToAnchor(scrollView.leadingAnchor).active = true
stackView.trailingAnchor.constraintEqualToAnchor(scrollView.trailingAnchor).active = true
stackView.bottomAnchor.constraintEqualToAnchor(scrollView.bottomAnchor).active = true
stackView.topAnchor.constraintEqualToAnchor(scrollView.topAnchor).active = true
stackView.widthAnchor.constraintEqualToAnchor(scrollView.widthAnchor).active = true
একটি ফাঁকা পূর্ণ-পর্দার দৃশ্য রয়েছে
একটি স্ক্রোল ভিউ যুক্ত করুন। স্ক্রোল ভিউ থেকে বেস ভিউতে নিয়ন্ত্রণ-টানুন , বাম-ডান-উপরে-নীচে, সমস্ত শূন্য যুক্ত করুন add
স্ক্রোল ভিউতে একটি স্ট্যাক ভিউ যুক্ত করুন। স্ট্যাক ভিউ থেকে স্ক্রোল ভিউতে নিয়ন্ত্রণ-টানুন , সমস্ত শূন্য বাম-ডান-উপরে-নীচে যুক্ত করুন।
স্ট্যাক ভিউয়ের ভিতরে দুটি বা তিনটি লেবেল রাখুন।
স্বচ্ছতার জন্য, লেবেলের পটভূমির রঙটি লাল করুন। লেবেলের উচ্চতা 100 এ সেট করুন।
এখন প্রতিটি ইউআইএলবেলের প্রস্থ নির্ধারণ করুন :
আশ্চর্যের বিষয় হল, স্ট্যাক ভিউতে নয়UILabel
, স্ক্রোল ভিউতে নিয়ন্ত্রণ-টানুন এবং সমান প্রস্থ নির্বাচন করুন ।
পুনরাবৃত্তি করতে:
এটা খুব সহজ। এটাই রহস্য।
গোপন টিপ - অ্যাপল বাগ:
এটি কেবল একটি আইটেম দিয়ে কাজ করবে না ! ডেমোটির কাজ করতে কয়েকটি লেবেল যুক্ত করুন।
তুমি করেছ.
টিপ: আপনার অবশ্যই প্রতিটি নতুন আইটেমের সাথে একটি উচ্চতা যুক্ত করতে হবে । যে কোনও স্ক্রোলিং স্ট্যাক ভিউতে প্রতিটি আইটেমের একটি অন্তর্নির্মিত আকার (যেমন একটি লেবেল) থাকতে হবে বা একটি স্পষ্ট উচ্চতার সীমাবদ্ধতা যুক্ত করতে হবে।
বিকল্প পদ্ধতি:
উপরের অংশে: আশ্চর্যরূপে, ইউআইএলবেলগুলির প্রস্থগুলি স্ক্রোল দর্শনের (স্ট্যাক ভিউ নয়) প্রস্থে সেট করুন।
অথবা ...
সুতরাং আপনার কাছে দুটি বিকল্প রয়েছে:
অথবা
পরিষ্কার হওয়ার জন্য, এই পদ্ধতিগুলির মধ্যে একটি করুন, দুটিই করবেন না।
অনুভূমিক স্ক্রোলিংয়ের জন্য। প্রথমে একটি UIStackView
এবং একটি তৈরি UIScrollView
করুন এবং সেগুলি নিম্নলিখিত উপায়ে আপনার দৃষ্টিতে যুক্ত করুন:
let scrollView = UIScrollView()
let stackView = UIStackView()
scrollView.addSubview(stackView)
view.addSubview(scrollView)
সেট করতে মনে translatesAutoresizingMaskIntoConstraints
করতে false
উপর UIStackView
এবং UIScrollView
:
stackView.translatesAutoresizingMaskIntoConstraints = false
scrollView.translatesAutoresizingMaskIntoConstraints = false
পিছনে কাজ করা, শীর্ষস্থানীয়, শীর্ষ এবং নীচের অ্যাঙ্করগুলির সমস্ত কিছু অ্যাঙ্কারের UIStackView
সমান হওয়া উচিত UIScrollView
:
stackView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true
stackView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
stackView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
তবে অবশ্যই প্রস্থের অ্যাঙ্করটির অ্যাঙ্কারের প্রস্থের UIStackView
সমান বা বড় হতে হবে UIScrollView
:
stackView.widthAnchor.constraint(greaterThanOrEqualTo: scrollView.widthAnchor).isActive = true
এখন আপনার অ্যাঙ্কর করুন UIScrollView
, উদাহরণস্বরূপ:
scrollView.heightAnchor.constraint(equalToConstant: 80).isActive = true
scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo:view.safeAreaLayoutGuide.bottomAnchor).isActive = true
scrollView.leadingAnchor.constraint(equalTo:view.leadingAnchor).isActive = true
scrollView.trailingAnchor.constraint(equalTo:view.trailingAnchor).isActive = true
এর পরে, আমি UIStackView
প্রান্তিককরণ এবং বিতরণের জন্য নিম্নলিখিত সেটিংস চেষ্টা করার পরামর্শ দেব :
topicStackView.axis = .horizontal
topicStackView.distribution = .equalCentering
topicStackView.alignment = .center
topicStackView.spacing = 10
অবশেষে addArrangedSubview:
আপনার ইউআইএসট্যাকভিউতে সাবউভিউ যুক্ত করতে আপনাকে পদ্ধতিটি ব্যবহার করতে হবে ।
একটি অতিরিক্ত বৈশিষ্ট্যটি আপনাকে দরকারী এটি হতে পারে যে কারণ UIStackView
একটি মধ্যে অনুষ্ঠিত হয় UIScrollView
আপনি এখন কিছু একটু সুন্দর বানাতে পাঠ্য insets এক্সেস আছে।
let inset:CGFloat = 20
scrollView.contentInset.left = inset
scrollView.contentInset.right = inset
// remember if you're using insets then reduce the width of your stack view to match
stackView.widthAnchor.constraint(greaterThanOrEqualTo: topicScrollView.widthAnchor, constant: -inset*2).isActive = true
এটি কেবল এতে যুক্ত করুন viewdidload
:
let insets = UIEdgeInsetsMake(20.0, 0.0, 0.0, 0.0)
scrollVIew.contentInset = insets
scrollVIew.scrollIndicatorInsets = insets
উত্স: https://developer.apple.com/library/ios/docamentation/UserExperience/ কনসেপ্টুয়াল / অটোলে আউটপিজি / লেআউটউসিংস্ট্যাক ভিউস html
আপনি স্ক্রোলবলস্ট্যাকভিউ চেষ্টা করতে পারেন : https://github.com/gurhub/ScrollableStackView
এটি অবজেক্টিভ-সি এবং সুইফট সুসংগত লাইব্রেরি। এটি কোকোপডসের মাধ্যমে উপলব্ধ ।
নমুনা কোড (সুইফ্ট)
import ScrollableStackView
var scrollable = ScrollableStackView(frame: view.frame)
view.addSubview(scrollable)
// add your views with
let rectangle = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 55))
rectangle.backgroundColor = UIColor.blue
scrollable.stackView.addArrangedSubview(rectangle)
// ...
নমুনা কোড (উদ্দেশ্য-সি)
@import ScrollableStackView
ScrollableStackView *scrollable = [[ScrollableStackView alloc] initWithFrame:self.view.frame];
scrollable.stackView.distribution = UIStackViewDistributionFillProportionally;
scrollable.stackView.alignment = UIStackViewAlignmentCenter;
scrollable.stackView.axis = UILayoutConstraintAxisVertical;
[self.view addSubview:scrollable];
UIView *rectangle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 55)];
[rectangle setBackgroundColor:[UIColor blueColor]];
// add your views with
[scrollable.stackView addArrangedSubview:rectangle];
// ...
আপনার যদি স্ট্রাক ভিউটি উল্লম্বভাবে স্ক্রোল দৃশ্যের মধ্যে কেন্দ্রে অন্তরায় থাকে তবে কেবল এটি সরিয়ে দিন।
উল্লম্ব স্ট্যাকভিউ / স্ক্রোলভিউয়ের উদাহরণ (অটোলেআউটটির EasyPeasy
জন্য ব্যবহার করে ):
let scrollView = UIScrollView()
self.view.addSubview(scrollView)
scrollView <- [
Edges(),
Width().like(self.view)
]
let stackView = UIStackView(arrangedSubviews: yourSubviews)
stackView.axis = .vertical
stackView.distribution = .fill
stackView.spacing = 10
scrollView.addSubview(stackView)
stackView <- [
Edges(),
Width().like(self.view)
]
কেবলমাত্র আপনার প্রতিটি পর্যবেক্ষণের উচ্চতার সংজ্ঞা দেওয়া আছে তা নিশ্চিত করুন!
প্রথম এবং সর্বাগ্রে আপনার দৃষ্টিভঙ্গিটি ডিজাইন করুন, পছন্দসই স্কেচের মতো কিছুতে বা কোনও স্ক্রোলযোগ্য সামগ্রী হিসাবে আপনি কী চান তার ধারণা পান।
এর পরে ভিউ কন্ট্রোলার মুক্ত ফর্ম তৈরি করুন (অ্যাট্রিবিউট ইন্সপেক্টর থেকে চয়ন করুন) এবং আপনার দর্শনটির অভ্যন্তরীণ সামগ্রীর আকার অনুযায়ী আকার এবং পরিমাপক থেকে চয়ন করার জন্য উচ্চতা এবং প্রস্থ সেট করুন।
এর পরে ভিউ কন্ট্রোলার একটি স্ক্রোল ভিউ রাখে এবং এটি একটি যুক্তি, যা আমি প্রায় সবসময় আইওএস-এ কাজ করে যাচ্ছি (এটির জন্য এই ভিউ ক্লাসের নথিপত্রের প্রয়োজন হতে পারে যা কমান্ডের মাধ্যমে প্রাপ্ত হতে পারে + ক্লিক করুন এই ক্লাসে বা গুগলিংয়ের মাধ্যমে)
আপনি যদি দুটি বা ততোধিক মতামত নিয়ে কাজ করছেন তবে প্রথমে এমন একটি ভিউ দিয়ে শুরু করুন, যা আগে পরিচয় করা হয়েছিল বা আরও আদিম এবং তারপরে সেই দৃশ্যে যান যা পরে চালু হয়েছে বা আরও আধুনিক। সুতরাং এখানে যেহেতু প্রথমে স্ক্রোল ভিউ চালু করা হয়েছে, প্রথমে স্ক্রোল ভিউ দিয়ে শুরু করুন এবং তারপরে স্ট্যাক ভিউতে যান। এখানে স্ক্রোল দেখার সীমাবদ্ধতাগুলিকে তার সুপার ভিউ-এর সাথে সমস্ত দিকের শূন্যে রাখবে। আপনার সমস্ত দর্শনগুলি এই স্ক্রোল ভিউয়ের মধ্যে রাখুন এবং তারপরে স্ট্যাক ভিউতে রাখুন।
স্ট্যাক ভিউ নিয়ে কাজ করার সময়
প্রথমে গ্রাউন্ড আপ (বটমস আপ অ্যাপ্রোচ) দিয়ে শুরু করুন, অর্থাত্, যদি আপনার ভিউতে লেবেল, পাঠ্য ক্ষেত্র এবং চিত্র থাকে তবে প্রথমে এই মতামতগুলি রাখুন (স্ক্রোল দর্শনের অভ্যন্তরে) এবং তারপরে এগুলি স্ট্যাক ভিউতে রাখুন।
এর পরে স্ট্যাক ভিউয়ের সম্পত্তিটি স্যুইচ করুন। যদি এখনও পছন্দসই ভিউ অর্জন না করা হয় তবে অন্য স্ট্যাক ভিউটি ব্যবহার করুন।
আপনার দৃষ্টিভঙ্গি তৈরির পরে, মা স্ট্যাক ভিউ এবং স্ক্রোল ভিউয়ের মধ্যে একটি সীমাবদ্ধতা রাখুন, যখন বাচ্চারা মা স্ট্যাক ভিউয়ের সাথে সীমাবদ্ধতা দেখায়। আশা করি এই সময়ের মধ্যে এটি ঠিকঠাক কাজ করা উচিত বা আপনি এক্সকোডের কাছ থেকে পরামর্শ দেওয়ার একটি সতর্কতা পেতে পারেন, এটি কী বলে তা পড়ুন এবং সেগুলি বাস্তবায়ন করুন। আশা করি এখন আপনার প্রত্যাশা অনুসারে একটি কাজের দৃষ্টিভঙ্গি হওয়া উচিত :)।
নেস্টেড বা একক স্ট্যাক ভিউয়ের জন্য স্ক্রোল ভিউটি অবশ্যই রুট ভিউ সহ একটি নির্দিষ্ট প্রস্থ নির্ধারণ করতে হবে। প্রধান স্ট্যাক ভিউ যা স্ক্রোল দর্শনের অভ্যন্তরে রয়েছে একই প্রস্থটি সেট করতে হবে। [আমার স্ক্রোল ভিউ এটিকে উপেক্ষা করে দেখার মত হ'ল]
ইউআইএসট্যাকভিউ এবং ইউআইএসক্রোলভিউয়ের মধ্যে সমান প্রস্থের সীমাবদ্ধতা সেট আপ করুন।
যদি কেউ অনুভূমিকভাবে স্ক্রোলভিউ খুঁজছেন
func createHorizontalStackViewsWithScroll() {
self.view.addSubview(stackScrollView)
stackScrollView.translatesAutoresizingMaskIntoConstraints = false
stackScrollView.heightAnchor.constraint(equalToConstant: 85).isActive = true
stackScrollView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
stackScrollView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
stackScrollView.bottomAnchor.constraint(equalTo: visualEffectViews.topAnchor).isActive = true
stackScrollView.addSubview(stackView)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.topAnchor.constraint(equalTo: stackScrollView.topAnchor).isActive = true
stackView.leadingAnchor.constraint(equalTo: stackScrollView.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: stackScrollView.trailingAnchor).isActive = true
stackView.bottomAnchor.constraint(equalTo: stackScrollView.bottomAnchor).isActive = true
stackView.heightAnchor.constraint(equalTo: stackScrollView.heightAnchor).isActive = true
stackView.distribution = .equalSpacing
stackView.spacing = 5
stackView.axis = .horizontal
stackView.alignment = .fill
for i in 0 ..< images.count {
let photoView = UIButton.init(frame: CGRect(x: 0, y: 0, width: 85, height: 85))
// set button image
photoView.translatesAutoresizingMaskIntoConstraints = false
photoView.heightAnchor.constraint(equalToConstant: photoView.frame.height).isActive = true
photoView.widthAnchor.constraint(equalToConstant: photoView.frame.width).isActive = true
stackView.addArrangedSubview(photoView)
}
stackView.setNeedsLayout()
}
আপনার দৃশ্যে একটি স্ক্রোল ভিউ রাখুন এবং এটি আকার করুন যাতে এটি দৃশ্যটি পূর্ণ হয়। তারপরে, স্ক্রোল ভিউয়ের ভিতরে একটি স্ট্যাক ভিউ রাখুন এবং স্ট্যাক ভিউয়ের ভিতরে অ্যাড আইটেম বোতামটি রাখুন। যত তাড়াতাড়ি সবকিছু ঠিক আছে, নিম্নলিখিত সীমাবদ্ধতাগুলি সেট করুন:
Scroll View.Leading = Superview.LeadingMargin
Scroll View.Trailing = Superview.TrailingMargin
Scroll View.Top = Superview.TopMargin
Bottom Layout Guide.Top = Scroll View.Bottom + 20.0
Stack View.Leading = Scroll View.Leading
Stack View.Trailing = Scroll View.Trailing
Stack View.Top = Scroll View.Top
Stack View.Bottom = Scroll View.Bottom
Stack View.Width = Scroll View.Width
কোড: Stack View.Width = Scroll View.Width
কী।
ম্যাকোস অনুঘটকটির জন্য কিছু নতুন দৃষ্টিভঙ্গি যুক্ত করা হচ্ছে। যেহেতু ম্যাকোস অ্যাপ্লিকেশনগুলি উইন্ডো আকার পরিবর্তনকে সমর্থন করে, তাই সম্ভবত এটি আপনার UIStackView
কোনও অবিচ্ছেদ্য স্থিতি থেকে একটি স্ক্রোলযোগ্য স্থানে স্থানান্তরিত করা সম্ভব , বা বিপরীত। এখানে দুটি সূক্ষ্ম জিনিস রয়েছে:
UIStackView
এটি করতে পারে এমন সমস্ত ক্ষেত্রের জন্য ডিজাইন করা হয়েছে।UIScrollView
আপনার নেভিগেশন বারের নীচে সদ্য অর্জিত / হারানো অঞ্চল (বা ম্যাকোস অ্যাপ্লিকেশানের ক্ষেত্রে সরঞ্জামদণ্ড) এর অ্যাকাউন্টে তার সীমানাকে পুনরায় আকার দেওয়ার চেষ্টা করবে।এটি দুর্ভাগ্যক্রমে একটি অসীম লুপ তৈরি করবে। আমি অত্যন্ত পরিচিত নই UIScrollView
এবং তার adjustedContentInset
, কিন্তু তার মধ্যে আমার লগ থেকে layoutSubviews
পদ্ধতি, আমি নিম্নলিখিত আচরণ দেখছি:
UIScrollView
এর সীমানা সঙ্কুচিত করার চেষ্টা করে (যেহেতু সরঞ্জামদণ্ডের নীচের অংশের প্রয়োজন নেই)।UIStackView
অনুসরণ করে।UIScrollView
অসন্তুষ্ট এবং বড় সীমানায় পুনঃস্থাপনের সিদ্ধান্ত নিন। লগ থেকে আমি যা দেখছি তা হ'ল এটি আমার কাছে খুব অদ্ভুত বোধ করে UIScrollView.bounds.height == UIStackView.bounds.height
।UIStackView
অনুসরণ করে।আমার কাছে মনে হচ্ছে দুটি পদক্ষেপই সমস্যার সমাধান করবে:
UIStackView.top
করতে UIScrollView.topMargin
।contentInsetAdjustmentBehavior
করুন .never
।এখানে আমি উল্লম্বভাবে বাড়ার সাথে উল্লম্বভাবে স্ক্রোলযোগ্য দৃশ্যের সাথে সম্পর্কিত UIStackView
। অনুভূমিক যুগলের জন্য, কোডটি সেই অনুযায়ী পরিবর্তন করুন।
আশা করি এটি ভবিষ্যতে যে কাউকে সহায়তা করবে। ইন্টারনেটে এটি উল্লেখ করার মতো কাউকে খুঁজে পেল না এবং এটি ঘটেছিল তা খুঁজে বের করার জন্য এটি আমাকে দীর্ঘদিন ধরে আকৃষ্ট করেছিল।