ইউআইএসক্রোলভিউ সামগ্রী কীসের জন্য ইনসেট সম্পত্তি?


158

কেউ আমাকে ব্যাখ্যা করতে পারেন যে একটি ইনসেটস ইনসেট সম্পত্তি কীসের UIScrollViewজন্য ব্যবহৃত হয়? এবং সম্ভবত একটি উদাহরণ প্রদান?

উত্তর:


240

এটি কন্টেন্ট ভিউ এবং এনকোলেসিং স্ক্রোল ভিউয়ের মধ্যে ইনসেটের দূরত্ব নির্ধারণ করে।

OBJ-সি

aScrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 7.0);

সুইফ্ট 5.0

aScrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 7.0)

স্ক্রোল ভিউ সম্পর্কিত একটি আইওএস রেফারেন্স লাইব্রেরি নিবন্ধ এখানে একটি তথ্যমূলক স্ক্রিনশট রয়েছে (ডুমুর 1-3) - আমি এটি এখানে পাঠ্যের মাধ্যমে প্রতিলিপি করব:

  _|←_cW_→_|_↓_
   |       | 
---------------
   |content| ↑
 ↑ |content| contentInset.top
cH |content|
 ↓ |content| contentInset.bottom
   |content| ↓
---------------
  _|_______|___ 
             ↑


   (cH = contentSize.height; cW = contentSize.width)

স্ক্রোল ভিউতে সামগ্রীর ভিউ প্লাসটি নির্দিষ্ট কন্টেন্ট ইনসেটগুলি যে কোনও প্যাডিং সরবরাহ করে।


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

28
হ্যাঁ, এটি স্ক্রোল দেখার অভ্যন্তরের সামগ্রীতে প্যাড দেয়। এটি CSS paddingসম্পত্তির অনুরূপ ।
মার্ক ডব্লু

এটি সম্পর্কে পিগব্যাকের জন্য দুঃখিত, আমি এটিকে তার নিজের প্রশ্নে স্থানান্তর করতে পারি, তবে এর ভিত্তিতে, আপনি যদি প্রতিটি বিষয়বস্তুটির ইনসেট মান সেট করে থাকেন তবে উদাহরণস্বরূপ হাইটের তুলনায় এটি অন্য কিছুর পরিবর্তে? এটি কি পুরো স্ক্রোলভিউটিকে আপনি যে উচ্চতায় সেট করেছেন তা হতে বাধ্য করে?
জাকেভ

@jakev না, এটা এর অভিভাবক মধ্যে .frame সম্পত্তি নিয়ন্ত্রণগুলি scrollview এর মাত্রা (: এই উত্তর দেখার stackoverflow.com/questions/5361369/... )। কন্টেন্টআইনেসেটসকে সমস্ত পক্ষের জন্য 0-এ সেট করার অর্থ হল যে স্ক্রোলভিউয়ের মধ্যে সামগ্রীতে প্যাড করা হবে না। সুতরাং আপনি যখন শীর্ষে স্ক্রোল করবেন তখন সামগ্রীটি স্ক্রোলভিউয়ের শীর্ষের বিপরীতে বসে আছে। আপনি যদি নীচে স্ক্রোল করেন তবে সামগ্রীটি স্ক্রোলভিউয়ের ডানদিকে পৌঁছে যাবে।
জেরেমি ওয়েইব

স্ক্রোলিং সবসময় স্ক্রোলভিউয়ের শীর্ষে (কনটেনইনসেট) শীর্ষে থাকলেও কনটেন্টইনসেটটি রাখা কী সম্ভব
চ্লেবটা

86

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

  _|←_cW_→_|_↓_
   |       | 
---------------
   |content| ↑
 ↑ |content| contentInset.top
cH |content|
 ↓ |content| contentInset.bottom
   |content| ↓
---------------
   |content|    
-------------↑-

এটি করার পরে আপনি যা পান তা কিন্তু আপনি যখন স্ক্রোল করবেন তখন এর কার্যকারিতা কেবল তা দেখায়:

  _|←_cW_→_|_↓_
   |content| ← content is still visible
---------------
   |content| ↑
 ↑ |content| contentInset.top
cH |content|
 ↓ |content| contentInset.bottom
   |content| ↓
---------------
  _|_______|___ 
             ↑

সামগ্রীর উপরের সারিটি এখনও দৃশ্যমান হবে কারণ এটি এখনও স্ক্রোল দর্শনের ফ্রেমের ভিতরে রয়েছে। শীর্ষ অফসেটটি ভাবার একটি উপায় হ'ল "যখন আমরা সমস্ত উপায়ে স্ক্রোল করি তখন কী পরিমাণ সামগ্রী স্ক্রোল ভিউয়ের নীচে সরিয়ে নেওয়া যায়"

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


এখানে সুন্দর জিনিসটি হ'ল আপনি "ঝাপসা দিয়ে স্ট্যাটাস বারের অধীনে স্ক্রোল" প্রভাব তৈরি করতে পোকামাকড় ব্যবহার করতে পারেন।
TheEye

ফটো অ্যাপ্লিকেশন সম্পর্কিত উদাহরণটি বোঝা সহজ ছিল।
অভিমুরলিধরণ

8

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

আমাদের পর্দার তিনটি যৌক্তিক ক্ষেত্র রয়েছে সেই ক্ষেত্রে বিবেচনা করুন:

TOP BUTTONS

TEXT

BOTTOM TAB BAR

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

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

ইনসেট ব্যতীত, স্ক্রোলার আপনাকে এতে লিখিত পর্যাপ্ত সামগ্রীটি স্ক্রোল করতে দেয় না। ইনসেটটি সহ, এটি এমন হয় যেন সামগ্রীটির ইনসেটের আকারের অতিরিক্ত "BLANK CONTENT" থাকে। খালি লেখাটি আসল "বিষয়বস্তুর" মধ্যে "ইনসেট" করা হয়েছে - ধারণাটি আমি এইভাবেই মনে করি।


4

এটি প্যাডিং যুক্ত করতে ব্যবহৃত হয় UIScrollView

ছাড়া contentInset, একটি টেবিল দৃশ্যটি এরকম:

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

তারপরে সেট করুন contentInset:

tableView.contentInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)

প্রভাব নীচের হিসাবে:

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

ভাল বলে মনে হচ্ছে, তাই না?

এবং আমি অধ্যয়ন করার জন্য একটি ব্লগ লিখি contentInset, সমালোচনা স্বাগত।


2

দুর্দান্ত প্রশ্ন।

নিম্নলিখিত উদাহরণটি বিবেচনা করুন ( scrollerএটি একটি ইউআইএসক্রোলভিউ):

float offset = 1000;
[super viewDidLoad];
for (int i=0;i<500; i++) {
    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(i * 100, 50, 95, 100)] autorelease];
    [label setText:[NSString stringWithFormat:@"label %d",i]];
    [self.scroller addSubview:label];
    [self.scroller setContentSize:CGSizeMake(self.view.frame.size.width * 2 + offset, 0)];
    [self.scroller setContentInset:UIEdgeInsetsMake(0, -offset, 0, 0)];
}

ইনসেটগুলি হ'ল কেবলমাত্র আপনার স্ক্রোলারটিকে যে সামগ্রীটি আপনি চান সেখানে "উইন্ডো" রাখতে বাধ্য করার একমাত্র উপায়। আমি এখনও এই নমুনা কোডটি নিয়ে গণ্ডগোল করছি, তবে ধারণাটি এখানে রয়েছে: আপনার "উইন্ডো" পেতে ইনসেটগুলি ব্যবহার করুন UIScrollView

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