আইওএস 7: ইউআইএনএভিগেশন কন্ট্রোলারে ইউআইএসক্রোলভিউ অফসেট


126

আমি বর্তমানে আমার অ্যাপ্লিকেশনটি আইওএস 7 এ স্থানান্তরিত করছি এবং আমি নতুন নেভিগেশন নিয়ন্ত্রক / বার পরিচালনায় কয়েক ঘন্টা আটকে আছি।

এর আগে, যখন আমাদের নেভিগেশন কন্ট্রোলার ছিল, তখন আমাদের এই জাতীয় স্নিপেট ছিল:

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];

ইন্টারফেস বিল্ডারে, আমাদের দেখার জন্য বিদ্যমান ন্যাভিগেশনবার সেট করার পছন্দ ছিল এবং সমস্ত কিছুই প্রকৃত দৃশ্যের সাথে মেলে।

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


ইন্টারফেস নির্মাতা _____________________ এবং ফলাফল


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

ইন্টারফেস নির্মাতা _____________________ এবং ফলাফল

আমার ধারণা আমি এখানে সত্যিই কিছু মিস করছি তবে আমি iOS7 ট্রানজিশন গাইড এ কোনও বিষয় বা অ্যাপল তথ্য খুঁজে পাচ্ছি না।

আপনার সাহায্যের জন্য ধন্যবাদ


সম্পাদনা

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


আপনি না থাকলে আপনি অটোলেআউটটি ব্যবহার করতে চাইতে পারেন, তাই আপনি নিশ্চিত করতে পারেন যে নির্দিষ্ট ভিউগুলি পর্দার উপরের / নীচে / দিক থেকে দূরে একটি সেট দূরত্ব রয়েছে
erdekhayser

আমি প্রকৃতপক্ষে অটোলেআউট ব্যবহার করছি না, তবে এটি ব্যবহার করে (চেকবক্সটি টিক দেওয়া) সমস্যার সমাধান করে না।
Strim

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

আপনার পূর্ববর্তী সম্পাদনাটি দেখে আমি কেবল আপনার সমস্যাটি আবিষ্কার করেছি। দুর্ভাগ্যক্রমে, এটি সর্বাধিক সুস্পষ্ট সমাধান নয়। এটি আবারও সমস্ত ব্যাখ্যা করার চেষ্টা করার পরিবর্তে, স্ক্রোল ভিউগুলি সেট আপ করতে শিখতে আমি এই ভিডিওটি ইউটিউবে ব্যবহার করেছি। youtube.com/watch?v=PgeNPRBrB18&feature=youtu.be শুভকামনা। তিনি কী করছেন তা পুরোপুরি বুঝতে এটি দেখতে আমার কয়েকবার সময় লেগেছে।
এরদেখায়সার

উত্তর:


286

ঠিক আছে তাই আমি সমাধানটি পেয়েছি, আমি আমার নিয়ামককে সম্পত্তি সেট করেছি:

self.automaticallyAdjustsScrollViewInsets = false

যদিও আমি এই সম্পত্তিটির সত্যিকারের সুবিধাটি বুঝতে পারি না, (বা কেন ডিফল্ট মানটি সত্য)

আমি খুঁজে পেয়েছি শুধুমাত্র ডকুমেন্টেশন সেখানে ছিল:

হালনাগাদ

আইওএস 11 automaticallyAdjustsScrollViewInsetsএ হ্রাস করা হয়েছে dep

আপনার এখন ব্যবহার করা উচিত:

self.tableView.contentInsetAdjustmentBehavior = .never

এই বৈশিষ্ট্যগুলির আরও ভাল ধারণা পেতে আপনি এই প্রশ্নটি এবং এর উত্তর যাচাই করতে আপনাকে উত্সাহিত করি


12
দুর্দান্ত খুঁজে। স্টোরিবোর্ডে ইউআইএসক্রোলভিউ সত্যিই জটিল। আমি আশা করি এক্সপোডের ভবিষ্যতের সংস্করণগুলিতে অ্যাপল এটিকে কিছুটা বিজোড় করে তুলবে।
p0lAris

4
এই কোডটি আমার UIScrollViewস্ক্রোলিং থেকে বাধা দেয় । তবে এটি ছাড়া আমি অফসেট থেকে মুক্তি পেতে পারি না। ক্লান্ত ...
scaryguy

9
এই পতাকাটি আপনার স্টোরিবোর্ড / নিব-এও স্যুইচ করা যেতে পারে, ভিউ কন্ট্রোলারের একটি "স্ক্রোল ভিউ ইনসেটগুলি সামঞ্জস্য করুন" চেকবাক্স রয়েছে। আমি এত দিন ধরে একটি প্রাচীরের বিরুদ্ধে মাথা বেঁধে যাচ্ছি এখন আইওএস 6 এবং 7 সমর্থন করে আরও জটিল, স্ক্রোল ভিউ এবং অটো লেআউট দিয়ে আমার সমস্যাগুলি বাছাই করার চেষ্টা করছি তাই শেষ পর্যন্ত সমাধান দেওয়ার জন্য অনেক ধন্যবাদ!
নিউটজ

2
অ্যাপ্লিকেশন দস্তাবেজটি আপনাকে বলবে যে নেভিগেশনবার.টানস্লুউসেন্ট = ইয়েস সেট করা নেভিগেশনবারকে সামগ্রীটি নীচে ঠেকানো থেকে আটকাবে। এটি সবচেয়ে বড় মিথ্যা এবং এই পোস্টটি না হওয়া পর্যন্ত আমাকে বহু ঘন্টা কাজকে আকৃষ্ট করেছে। তদতিরিক্ত, আপনাকে অবশ্যই স্ব.আউটটোমেটিক অ্যাডজাস্টসস্ক্রোলভিউআইনেসেটস = NO সেট করতে হবে; এই পোস্টের জন্য আপনাকে অনেক ধন্যবাদ!!!!!!! আপেল ও আপেল?
user779764

আমি দেখতে পেয়েছি যে এর ফলে আমার ইউআইএসক্রোলভিউয়ের সীমানা নেভ বারের উচ্চতা (-64৪ পয়েন্ট) দ্বারা নীচে নামিয়েছে। আমি ম্যানুয়ালি এটিকে 0 এ ওভাররড করেছি, তবে ইউআইএসরোল ভিউটি এখনও y- অক্ষরে স্ক্রোল করবে এবং "স্ন্যাপ" -64 এ একটি কাল্পনিক লাইনে যাবে found আপনার সমাধান এটি সমাধান।
gdbj

92

@ জাস্টাফিংজারের উত্তরটি আমার জন্যও আকর্ষণীয় কাজ করেছিল।

কেবল যোগ করতে চেয়েছিলেন যে এই সেটিংটি ইন্টারফেস নির্মাতা থেকেও সহজেই সমন্বয় করা যায়।

  1. আপনার দর্শন নিয়ামক নির্বাচন করুন
  2. 'বৈশিষ্ট্য পরিদর্শক' ট্যাবে ক্লিক করুন
  3. 'স্ক্রোল দেখুন ইনসেটগুলি সামঞ্জস্য করুন' আনচেক করুন
  4. উপভোগ করুন!

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


ইউআইএসক্রোলভিউ বৈশিষ্ট্যে এই বিকল্পটির সন্ধানে যুগে যুগে ব্যয় করুন এবং দেখুন নিয়ামকটি নয়! ধন্যবাদ!
ডোমিনিক উইলিয়ামস

11

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


হ্যাঁ, এই এক চেয়ে "স্ক্রোল দেখুন Insets সামঞ্জস্য করুন" আমার জন্য কাজ
Dmytro

2

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


2

আমার অনুরূপ সমস্যা হয়েছিল, একটি ভিউ কনট্রোলারকে বরখাস্ত করার পরে, আমার টেবিলভিউ থেকে কন্টেন্টঅফসেটটি পরিবর্তন করা হয়েছে (0, -64)।

আমার সমাধানটি কিছুটা অদ্ভুত ছিল, আমি অন্যান্য সমস্ত উত্তর চেষ্টা করেছিলাম তবে কোনও সফলতা পাইনি, আমার সমস্যাটিকে স্থির করার একমাত্র জিনিসটি .xib এর নিয়ন্ত্রণ গাছের টেবিলভিউ অবস্থানটি স্যুইচ করা ছিল was

এটি পিতামাতার মধ্যে প্রথম নিয়ন্ত্রণ ছিল এর মতো দেখুন:

আগে

আমি ইমেজভিউয়ের ঠিক পরে টেবিলভিউ স্থানান্তরিত করেছি এবং এটি কাজ করেছে:

পরে

দেখে মনে হচ্ছে যে টেবিল ভিউটিকে প্রথম অবস্থানে রাখলে সমস্যা দেখা দিচ্ছিল এবং টেবিলের ভিউটিকে অন্য অবস্থানে নিয়ে যাওয়া সমস্যার সমাধান করেছে।

পিডি আমি অটোলআউট উভয়ই স্টোরিবোর্ড ব্যবহার করছি না

আশা করি এটি কাউকে সাহায্য করতে পারে!


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

1

আমিও এই সমস্যার মুখোমুখি হই।

UIScrollView সামগ্রীর আকার ওএস দ্বারা অন্যান্য আকার হিসাবে গণনা করা হয়, সীমাবদ্ধতা সিস্টেম দ্বারা সরবরাহিত উত্স - এজন্য ওএসের সন্দেহ আছে।

কীভাবে ঠিক করবেন - আপনার সামগ্রীর আকারের স্পষ্টভাবে সংজ্ঞা দেওয়া উচিত UIScrollView:

  1. এতে স্ক্রোলযোগ্য সামগ্রী এম্বেড করুন UIView(আমি এটির নতুন নাম দিয়েছি ContentView)
  2. সীমাবদ্ধতা যুক্ত করুন:

ContentView.Weight = View.Weight এবং ContentView.Height = View.Height

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


0

দেখে মনে হচ্ছে সমাধানের চারপাশে স্টোরিবোর্ড ফাইলটি "আইওএস 6.1 এবং তার আগের" হিসাবে দেখা (স্টোরিবোর্ড ফাইলটি নির্বাচন করুন-> ফাইল ইন্সপেক্টর-> ইন্টারফেস বিল্ডার ডকুমেন্ট-> হিসাবে দেখুন this এই মোডে সাবভিউগুলি স্থাপন করা অফসেটটি দেখায়।


ঠিক আছে, আমি স্টোরিবোর্ড ব্যবহার করছি না। তবে আমি নিশ্চিত নই যে এটি আইওএস to থেকে আইওএস problem সমস্যাটি রয়েছে, উপরের উদাহরণটি আইওএস দিয়ে সম্পূর্ণ তৈরি করা হয়েছে Moreover এছাড়াও, আমি আমার প্রশ্নটি সম্পাদনা করেছি, এটি কেবল ইউস্ক্রোলভিউ এবং ইউটিউবভিউ দিয়েই দেখা যাচ্ছে (যতদূর আমি জানি)।
Strim

হুম আকর্ষণীয় ... এটি সন্ধান করে আপনি দস্তাবেজ উপাদানটিতে XIB এর শীর্ষে ভেরিয়েন্ট = "6xAndEarlier" যুক্ত করতে পারেন, কারণ আমি উপরে উল্লিখিত বিটটি উল্টানোর সময় এই পার্থক্য। এবং এফওয়াইআই এই সমস্যাটি আমার জন্যও উইউইউভিউয়ের জন্য ঘটে।
swititman

0

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

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

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