ন্যাভিগেশন বারটি নতুন আইওএস 7 এসডিকে দিয়ে দেখা হয়েছে


113
CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];


UISearchBar  *mySearchBar = [[UISearchBar alloc] 
               initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];

mySearchBar.autoresizingMask = 
              UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;


UITableView  *myTableView = [[UITableView alloc] 
     initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];

myTableView.autoresizingMask = 
               UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;


[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];

পূর্ববর্তী সংস্করণগুলিতে এটি সঠিকভাবে কাজ করছে। অনুসন্ধান বারটি statusbarনেভিগেশন বারের নীচে প্রদর্শিত হচ্ছে । tableviewঅনুসন্ধান দণ্ডের নীচে উপস্থিত হয়

তবে আমি যখন এটি চালাই Xcode 5 sdk iOS 7, অনুসন্ধান বারটি দৃশ্যমান হয় না (আমার মনে হয় এটি স্ট্যাটাস বার এবং নেভিগেশন বারের নীচে রাখা হয়েছে), এবং নেভিগেশন বারটি টেবিলের দৃশ্যের উপরে উপস্থিত হবে।

iOS 7স্থির মুক্তির সাথে এটি স্থির করা হবে ?

নাকি আমার কোডিংয়ের সমস্যা?

অথবা এর (y = statubar height + nav bar height)জন্য y মান যোগ করে কি আমাদের এটি পরিচালনা করতে হবে iOS 7?

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

ভিডিডিআলআউটসুবভিউগুলিতে, আমি ভিউয়ের সীমাটি মুদ্রণ করি:

{{0, 0}, {320, 568}}

আমার সামগ্রীতে ফলাফলগুলি নেভিগেশন বার এবং স্থিতি দণ্ডের নীচে উপস্থিত হবে।

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

অন্য কেউ এই সমস্যাটি অভিজ্ঞ হয়েছে?

হালনাগাদ:

আমি এই নির্দিষ্ট সমস্যার সমাধান পেয়েছি। নেভিগেশন বারের স্বচ্ছ সম্পত্তি সেট করুন:

self.navigationController.navigationBar.translucent = NO;

এটি নেভিগেশন বার এবং স্থিতি দণ্ডের নীচে ফ্রেম হওয়া থেকে দর্শনটিকে ঠিক করবে।

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


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

উত্তর:


188

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

 if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;

আপনার উপরের যোগ করা উচিত -(void)viewDidLoad পদ্ধতিতে উপরেরটি যুক্ত করতে হবে।

দ্রষ্টব্য: আপনার এখনই আইওএস 7 এবং এক্সকোড 5 এর সর্বশেষ জিএম রিলিজটি ব্যবহার করা উচিত যেহেতু এপিআই বিটা সংস্করণ থেকে পরিবর্তিত হয়েছে।


আমার কোডে এটি প্রান্তিকর প্রসারিত লেআউট বলে। অঘোষিত শনাক্তকারী UIExtendedEdgeNone ব্যবহার করুন। সাহায্য করুন.

6
এটি UIRectEdgeNone এ পরিবর্তিত হয়েছে
সাইমন

6
ঠিক এ কারণেই এখানে এ জাতীয় প্রশ্ন জিজ্ঞাসা বা উত্তর দেওয়া উচিত নয়।
সুলতান

আমি যদি সিদ্ধান্ত নিতে পারি না যে আপনি যদি আইওএস with এর সাথে সামঞ্জস্য রাখতে চান তবে নিয়ন্ত্রকের সেই সম্পত্তি আছে কি না তা পরীক্ষা করার জন্য আপনি কোডের মাধ্যমে শর্তসাপেক্ষ মামলা চালু করতে বাধ্য হন ..
জেরিডিডিএম ২d

12
এটি কেবলমাত্র ইউআইএনএভিগেশন কন্ট্রোলারটিতে ভিউ এম্বেড করা থাকলে কাজ করবে বলে মনে হয়।
পোজো

37

স্টোরিবোর্ড থেকে স্ক্রিনশট

আপনি যদি স্টোরিবোর্ডে কাজ করছেন (যা আমি দৃ strongly়ভাবে প্রস্তাব দিই!) ​​এটি সমাধান: আপনি স্টোরিবোর্ডে আপনার ভিউকন্ট্রোলারের "প্রসারিত প্রান্তগুলি" অক্ষম করতে পারেন। প্রতিটি ভিউকন্ট্রোলারের জন্য আপনাকে এটি করতে হবে। আপনি স্টোর্টাইবোর্ডে ভিউকন্ট্রোলার আইকনটিতে ক্লিক করে প্রসারিত প্রান্তগুলি অক্ষম করতে পারেন (ভিউয়ের নীচে প্রোডাক্টওয়ানারের পাশাপাশি) এবং তারপরে বৈশিষ্ট্য পরিদর্শক (চিত্রগুলি দেখানোর মতো) নির্বাচন করে।

এটি আইওএস 6 এর মতো প্রান্তিককরণ লাইনও সেট করবে।

এক্সকোড 5 এর আর একটি দুর্দান্ত সরঞ্জাম হ'ল "পূর্বরূপ": বাটলার বাটনে ক্লিক করুন (সহকারী সম্পাদক) এবং প্রাকদর্শন নির্বাচন করুন। সেখানে আপনি আইওএস 6 নির্বাচন করতে পারেন এবং দেখতে পাবেন যে আপনার স্টোরিবোর্ডের নকশাটি আইওএস 6 এ কেমন হবে।

এটি ঠিক দুর্দান্ত: ডি

[হালনাগাদ]

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

[self.navigationController.view setBackgroundColor:[UIColor whiteColor]];

হ্যাঁ, এটি স্টোরিবোর্ডের দৃষ্টিকোণ থেকে সমাধান আসবে। ধন্যবাদ.
jpittman

12

ওপি যেমন বলেছে, এর একটি সহজ সমাধান রয়েছে যা নেভিগেশন বারকে অস্বচ্ছ হতে সেট করা। কোডে এটি করার পরিবর্তে, আপনার মূল নেভিগেশন বারের জন্য কেবল "ট্রান্সলুসেন্ট" টিপুন:

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


8

self.edgesForExtendedLayout=UIRectEdgeNone;

এটি আইওএস 7 সিমুলেটারে কাজ করে (এক্সকোড 5 ডিপি 5)


2
এটি আইওএস 7 এ দুর্দান্ত কাজ করে তবে আমি যদি অ্যাপসটি আইওএস 6 এ চালিত করি এবং তারপরে আবারও ভিউগুলি সরানো হয়। এর কোন সমাধান ?. এছাড়াও আমাদের প্রতিটি ভিউ নিয়ন্ত্রক ভিউডিড লোড পদ্ধতিতে এই সম্পত্তিটি সেট করতে হবে?
লগনাথন

আপনি যদি সর্বদা if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
আইওএসটি

2

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

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


1

@ এক ম্যান ক্রু এর উত্তর সঠিক, কিন্তু:

পুরানো সংস্করণগুলিতে অ্যাপটি চালানোর সময় ত্রুটিগুলি এড়াতে আমি এই কোডটি ব্যবহার করার পরামর্শ দেব:

 #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1
     if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;
 #endif

0

self.edges ForExtendedLayout = UIRectEdgeNone;

এবং আপনাকে অ্যাপডেলিগেট # অ্যাপ্লিকেশনটিতে এটি করা দরকার: ডিনফিনিশলঞ্চিং উইথঅ্যাপশনগুলি:

স্ব.উইন্ডো.ব্যাকগ্রাউন্ড কালার = [ইউআইকলার হোয়াইট কালার];

অন্যথায় নেভিগেশন বারের পটভূমির রঙ ধূসর হয়ে যাবে। কারণ স্বচ্ছ নেভিগেশন বার উইন্ডোটিকে ওভারল্যাপ করে।


0

ব্যবহারকারী যখন আপনার টেবিলের দৃশ্যটি স্ক্রোল করবেন আপনি যদি স্বচ্ছতা বজায় রাখতে চান তবে আপনি সামগ্রীটি সেট করতে পারেন:

CGFloat topLayoutGuide = self.topLayoutGuide.length + self.tabBarController.navigationController.navigationBar.frame.size.height;
self.tableView.contentInset = UIEdgeInsetsMake(topLayoutGuide, 0, 0, 0);

-1

একটি সমাধান নেভিগেশন নিয়ামক ব্যবহার করা হয়। এটি স্বয়ংক্রিয়ভাবে সমস্যার সমাধান করে। এছাড়াও এক্সকোড পূর্বরূপ সংস্করণগুলির পরিবর্তে এক্সকোড 5 ব্যবহার করুন কারণ সেগুলি বিটা হিসাবে রয়েছে।

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