আইওএন av-এ ইউআইএনএভিগেশনবারকে শীর্ষের দর্শন থেকে আটকানো কীভাবে?


100

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

সমস্ত সামগ্রী অলস সমস্ত সামগ্রী

আমি কীভাবে এটি ঠিক করতে পারি কেউ জানেন?

সম্পাদনা করুন: আমি এই পূর্বে সুপারিশ চেষ্টা করেছি:

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

তবে এটি খুব বিজোড় ফলাফল দেয়।

সমাধানের চেষ্টা

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


এখানে আপনি এই সমস্যার জন্য অন্য একটি সমাধান। stackoverflow.com/a/51491645/10148333
আফনসো

উত্তর:


236

নেভিগেশন বারের স্বচ্ছ সম্পত্তি সেট করুন :

self.navigationController.navigationBar.translucent = NO;

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

যদি আপনাকে নেভিগেশন বারটি দেখাতে এবং আড়াল করতে হয় তবে ব্যবহার করুন

 if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;   // iOS 7 specific

আপনার viewDidLoadপদ্ধতিতে


4
আমি viewDidLoadএটি এর অধীনে রেখেছি তবে এতে কোনও পরিবর্তন আসে না।
স্যাম ডি 20

13
এটিকে ভিডে রাখুন ডিডলয়আউটসুবিউজের মজাদার
হিন্দু

4
এটি দেখার জন্য ডিডলায়আউটসুভিউগুলিতে কৌশল যুক্ত করা হয়েছে। আমি সাহায্য ভদ্রলোক প্রশংসা করি!
স্যাম ডি 20

হাই, কোন প্রশ্ন? বা এটা প্রশংসা হয়?
হিন্দু

4
self.edgesForExtendedLayout = UIRectEdgeNone; আমাকে সাহায্য করেছেন
লুকি

33

ইন iOS 7অক্ষমতা দ্বারা সব কন্ট্রোলার অস্বচ্ছ সম্পত্তি মান হ্যাঁ তাই আপনি কোন অস্বচ্ছ সম্পত্তি সেট, এই সমস্যার জন্য।

self.navController.navigationBar.translucent = NO;

4
কোনও "নাভাকন্ট্রোলার" সম্পত্তি নেই। এটি ব্যবহার করুন: self.navicationController.navicationBar.translucent = NO;
জিন জেড। রাগান

আমি অ্যাপের প্রতিনিধিতে নেভিগেশনবারকন্ট্রোলার অবজেক্ট তৈরি করি এবং নাম নেভকন্ট্রোলার দেব।
সুমিত মুন্ডরা

21

আপনি এই পর্দার ভিউ কন্ট্রোলারের অ্যাট্রিবিউট ইন্সপেক্টরতে "প্রান্ত প্রসারিত করুন" অক্ষম করতে পারেন (নীচের চিত্রে দেখানো হয়েছে):

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


12

এটি আইওএস ৮.১-এও দ্রুতগতির জন্য কাজ করে

navigationController?.navigationBar.translucent = false

8

আপনি আপনার উপর translucency রাখতে চান navigationBar, আপনার শেষে viewDidLoadঅথবা আপনার মধ্যে viewWillAppearঅ্যাড কোড এই লাইন:

[self.view sendSubviewToBack:self.tableView]

আপনার বর্তমান দৃশ্যে যদি আপনার scrollViewসাবক্লাস ( UITableView, UICollectionViewইত্যাদি) index0 এ থাকে তবে subviewsএটি স্বয়ংক্রিয়ভাবে আপনার অনুযায়ী ইনসেটগুলিকে সামঞ্জস্য করবে navigationBar। এবং এটি iOS7 এর পূর্ববর্তী সংস্করণগুলিতে আপনার ইউআইকে প্রভাবিত করবে না।


সম্পাদনা করুন আপনি যদি আপনার UITableViewপ্রোগ্রামটিমেটিকালভাবে সূচনা করেন তবে এটি ব্যবহার করে এটিকে যুক্ত করা ভাল[self.view insertSubview:self.tableView atIndex:0];


এটি সঠিক উত্তর হওয়া উচিত। আপনি যদি প্রোগ্রামটিমে সাবউভি যোগ করছেন তবে আপনি [self.view insertSubview:self.tableView atIndex:0];এটি যুক্ত করার পরে এটি পিছনে প্রেরণের পরিবর্তে এটি করতে পারেন।
smitt04

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

এটি কাজ করে তবে হ্যাকের মতো দেখাচ্ছে। এ সম্পর্কে অফিসিয়াল ডকুমেন্টেশনে কোনও নোটিশ আছে কি?
জন ট্রেসিড


3

এই ইউআরএলে প্রদর্শিত হিসাবে আপনি এই পদ্ধতিটি আপনার ভিউ কন্ট্রোলারে যুক্ত করতে পারেন :

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.searchBar.frame = 
    CGRectMake(0, self.topOfViewOffset, self.searchBar.frame.size.width, self.searchBar.frame.size.height);
}

2

আর একটি পদ্ধতির self.automaticallyAdjustsScrollViewInsets = YES;আপনার ভিউ কন্ট্রোলার সেট করা হয়। এটি ডিফল্টরূপে সক্ষম করা হয়েছে। তবে আপনার ক্ষেত্রে:

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


-1

আপনি যদি ভিউগুলিতে সম্পূর্ণ নিয়ন্ত্রণ রাখতে চান এবং আইওএসের ত্রুটিযুক্ত সমন্বয় এড়াতে চান, সাবক্লাস ইউআইটিএবলভিউ এবং ইনসেটগুলি (উভয় স্ক্রোল এবং সূচক) - (অকার্যকর) উইলমোভটো উইন্ডো: (ইউআই উইন্ডো *) নতুন উইন্ডোতে সামঞ্জস্য করুন। আমার জন্য কাজ কর.


-4

অন্য বিকল্পটি হ'ল সোর্স কোড মোডে আপনার তথ্য.পলিট ফাইলটি খুলুন এবং নিম্নলিখিত তথ্যটি প্রবেশ করান:

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarHidden</key>
<true/>

আশাকরি এটা সাহায্য করবে.


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