ইউআইটিববার আইটেম চিত্রটি নীচে সরানো হচ্ছে?


99

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

আমি বর্তমানে ব্যবহার করছি (নীচে দেখুন):

[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];

তবে শিরোনামহীন বৃহত্তর চিত্রটি ব্যবহার করতে পছন্দ করবেন, এই মুহুর্তে যদি আমি চিত্রটি প্রায় 2 পিক্সেল @ 2x এর চেয়ে বড় করে তুলি UITabBarতবে নীচের দিকে অনেক অব্যবহৃত স্থান ছেড়ে যাওয়ার সময় এটি শীর্ষে প্রান্তটি সরে যেতে শুরু করে।

উত্তর:


183

tabBarItemএর imageInsets(আইকন চিত্রটি সরানোর জন্য) সামঞ্জস্য করার চেষ্টা করুন এবং নিয়ামকদের শিরোনামটি শূন্য করতে সেট করুন (যাতে কোনও শিরোনাম প্রদর্শিত হয় না)। এটিকে -initবা -viewDidLoadপদ্ধতিতে নিয়ামকটিতে এর মতো কিছু রাখুন :

উদ্দেশ্য গ

self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;

সুইফট

self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
self.title = nil

UITabBarItemসম্পত্তি UIBarItemআছে এমন একটি উপশ্রেণী UIEdgeInsets imageInsets। পোকামাকড়গুলি দেখতে ভাল লাগা পর্যন্ত সামান্য খেলুন (আপনার ট্যাববারের আইকনগুলির উপর নির্ভর করে)


4
@ লুকাস: তবে এটি চিত্র সঙ্কুচিত করে।
সৌরভ ভরদ্বাজ 10'14

4
@ সৌরভ সেগুলি আমার জন্য সঙ্কুচিত করে না
টাইগারকডিং

7
আপনার পিক্সেল নিখুঁত হওয়ার প্রয়োজন হলে আসল ইনসেট মান 5.5f is
ব্যবহারকারী

4
@ rr1g0 ব্যাজটি কাস্টম অবস্থানে সরিয়ে নেওয়া সম্ভব নয়। আপনার যদি কোনও ব্যাজ বা কাস্টম ব্যাজ উপস্থিতির কাস্টম অবস্থানের প্রয়োজন হয় তবে আপনাকে অবশ্যই এটি প্রয়োগ করতে হবে
লুকাশ কুকাক্কা

4
@ সৌরভ আপনার চিত্রটি সঙ্কুচিত না করতে নীচে একটি নেতিবাচক মান দিয়ে অফসেট করতে হবে।
রমলমোয়ে

151

আপনি স্টোরিবোর্ডের মাধ্যমেও এটি করতে পারেন। আপনার ট্যাববারাইট নির্বাচন করুন, আকার পরিদর্শক যান এবং উপযুক্ত ইনসেটগুলি বরাদ্দ করুন।

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

* এক্সকোড, সংস্করণ 7.3.1 (7D1014) এ প্রদর্শিত হয়েছে


সুন্দর এবং পরিষ্কার!
কেন

সর্বোত্তম জবাবগুলির মধ্যে সেরা ... আপনাকে অনেক ধন্যবাদ @ নীল গালিয়াসকারভ
ভেঙ্কটেশ চেজারলা

সংক্ষিপ্ত এবং পরিষ্কার। ধন্যবাদ 👍🏻
ফাদি আবুজান্ট

50

এর একটি সাবক্লাস তৈরি করুন UITabBarControllerএবং এতে viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.viewControllers enumerateObjectsUsingBlock:^(UIViewController *vc, NSUInteger idx, BOOL *stop) {
        vc.tabBarItem.title = nil;
        vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
    }];
}

সুইফট 3:

for vc in self.viewControllers! {
    vc.tabBarItem.title = nil
    vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}

এটি আমার জন্য কাজ করেছে। কেবলমাত্র এই পদ্ধতিটি দ্রুতগতির জন্য
গণনাবিদগণের ব্যবহারের ব্লক

সাবক্লাস করবেন না, পরিবর্তে এটি আপনার অ্যাপডেলিজেটে রাখুন
লাসজলো

4
এই স্নিপেটটিও রাখার AppDelegateকাজ করে তবে এটি সাবক্লাসিংয়ের চেয়ে স্পষ্টতই ভাল নয়। যদিও আপনার নিজের পছন্দ থাকতে পারে :)
ব্রায়ান

10

আপনি যদি জামারিন ব্যবহার করেন তবে এটি কাজ করে:

screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";

10

এটি আমার পক্ষে কাজ করেছে

সুইফট 4

let array = tabBarController?.customizableViewControllers
for controller in array! {
    controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}

2

SWIFT 3.0

আপনি ইমেজ lnsets সেট করতে পারেন, শীর্ষ, বাম, নীচে এবং ডেসিং অনুযায়ী ডানদিকে সেট করতে পারেন।

self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)

2

আইওএস 11 এর জন্য আপনার চিত্র- ইনসেটস সেট করা বাদ দিয়ে ট্রাইটকলিকেশন পদ্ধতি ওভাররাইড করা দরকার । আপনার সাবক্ল্যাসড ইউআইটিববারকন্ট্রোলার শ্রেণিতে পদ্ধতিটি যুক্ত করুন add

public override UITraitCollection TraitCollection {
 get {
  return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact);
 }
}

ভাল টিপ যা আইপ্যাড এবং আইওএস ১১ এ ট্যাব বার আইটেমের জন্য চিত্রের অবস্থান সম্পর্কিত কোনও সমস্যা সমাধানে আমাকে সহায়তা করেছে 11 তবে ভিউ কন্ট্রোলার স্তরে বৈশিষ্ট্য সংগ্রহকে ওভাররাইড করা খুব কঠোর, ইউআইটিববার শ্রেণিকে সাবক্লাস করা এবং বৈশিষ্ট্য সংকলনের সম্পত্তিটিকে ওভাররাইড করা আরও ভাল সেখানে এছাড়াও কেবল অনুভূমিক শ্রেণীর সাথে একটি বৈশিষ্ট্য সংগ্রহ ফিরিয়ে দেওয়া অন্যান্য বৈশিষ্ট্য সংগ্রহের বৈশিষ্ট্যগুলি বাদ দেবে। return UITraitCollection(traitsFrom: [ super.traitCollection, UITraitCollection(horizontalSizeClass: .compact)])আমার জন্য কৌশলটি।
এমমানুয়েল প্যারিস

1

ইন সুইফট 4.2 , UIEdgeInsetsMakeঅনুমোদিত হয়নি করা হয়, এর পরিবর্তে আমরা ব্যবহার করা উচিত UIEdgeInsets,

let array = tabBarController?.customizableViewControllers
    for controller in array! {
        controller.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0)
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.