ইউআইটিববারের রঙিন / পটভূমির রঙ পরিবর্তন করা


87

ইউআইএনএভিগেশনবার এবং ইউআইসোচবার উভয়ের উভয়ই একটি টিন্ট কালার সম্পত্তি রয়েছে যা আপনাকে সেই দুটি আইটেমের রঙের রঙ (অবাক করার মতো, আমি জানি) পরিবর্তন করতে দেয়। আমি আমার অ্যাপ্লিকেশনটিতে ইউআইটিববারের কাছে একই জিনিসটি করতে চাই, তবে এটি ডিফল্ট কালো রঙ থেকে পরিবর্তন করার উপায় খুঁজে পেয়েছি। কোন ধারনা?


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

উত্তর:


47

আমি একটি ইউআইটিববারকন্ট্রোলার সাবক্ল্যাসিং করে এবং ব্যক্তিগত ক্লাস ব্যবহার করে এটি কাজ করতে সক্ষম হয়েছি:

@interface UITabBarController (private)
- (UITabBar *)tabBar;
@end

@implementation CustomUITabBarController


- (void)viewDidLoad {
    [super viewDidLoad];

    CGRect frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, 48);
    UIView *v = [[UIView alloc] initWithFrame:frame];
    [v setBackgroundColor:kMainColor];
    [v setAlpha:0.5];
    [[self tabBar] addSubview:v];
    [v release];

}
@end

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

এটি কি একটি ব্যক্তিগত এপিআই? আমি যদি আমার অ্যাপ্লিকেশনটিতে এটি ব্যবহার করি তবে আমি কি অস্বীকার করব?
ফ্রাঙ্ক

সেখানে যে কোন বেসরকারী কল কোন হতে সেখানে প্রদর্শিত স্বল্পতা
এন্থনি প্রধান

অ্যাক্সেসযোগ্য না হতে ব্যবহৃত ট্যাববার সম্পত্তি।
কনফেয়ার

এটি ট্যাববারের পটভূমিটি পরিবর্তন করে, "নির্বাচিত আইটেম" হাইলাইটটি নয়, যা সম্পর্কে আমি আরও আগ্রহী
হব

105

আইওএস 5 বেশিরভাগ ইউআই উপাদানগুলির চেহারা কাস্টমাইজ করার জন্য কিছু নতুন উপস্থিতির পদ্ধতি যুক্ত করেছে।

উপস্থিতি প্রক্সি ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনটিতে একটি ইউআইটিববারের প্রতিটি উদাহরণ লক্ষ্যবস্তু করতে পারেন।

আইওএস 5 + 6 এর জন্য:

[[UITabBar appearance] setTintColor:[UIColor redColor]];

আইওএস 7 এবং ততোধিকের জন্য, দয়া করে নিম্নলিখিতটি ব্যবহার করুন:

[[UITabBar appearance] setBarTintColor:[UIColor redColor]];

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

UIColor *tintColor; // iOS 5+6
UIColor *barTintColor; // iOS 7+
UIColor *selectedImageTintColor;
UIImage *backgroundImage;
UIImage *selectionIndicatorImage;

4
নাহ। : আমি নির্দিষ্ট, তারা আইওএস 5-এর জন্য আপনি সর্বদা শর্তাধীন সংকলন বিবৃতি দিয়ে নির্দিষ্ট সংস্করণ লক্ষ্য করতে পারেন হয় cocoawithlove.com/2010/07/...
imnk

ধন্যবাদ, এটি সহায়ক ছিল :) কখনই জানতাম না যে এমন জিনিস আছে।
বীরু

আইওএস 7-এর জন্য, আপনি ব্যাকগ্রাউন্ডের রঙ পরিবর্তন করতে চাইলে [ইউআইটিববারের উপস্থিতি] সেটবার্টিন্ট কালার ব্যবহার করুন
জিজার

34

আমার চূড়ান্ত উত্তরের একটি সংযোজন রয়েছে। প্রয়োজনীয় স্কিমটি সঠিক হলেও আংশিক স্বচ্ছ রঙ ব্যবহারের কৌশলটি উন্নত করা যেতে পারে। আমি ধরে নিই যে এটি কেবলমাত্র ডিফল্ট গ্রেডিয়েন্টকে দেখানোর জন্য। ওহ, এছাড়াও, ট্যাববারের উচ্চতা কমপক্ষে ওএস 3-তে 48 এর পরিবর্তে 49 পিক্সেল।

সুতরাং, যদি আপনার গ্রেডিয়েন্ট সহ উপযুক্ত 1 x 49 চিত্র থাকে তবে এটি ব্যবহার করা উচিতডিডলডের ভিউর সংস্করণ:

- (void)viewDidLoad {

    [super viewDidLoad]; 

    CGRect frame = CGRectMake(0, 0, 480, 49);
    UIView *v = [[UIView alloc] initWithFrame:frame];
    UIImage *i = [UIImage imageNamed:@"GO-21-TabBarColorx49.png"];
    UIColor *c = [[UIColor alloc] initWithPatternImage:i];
    v.backgroundColor = c;
    [c release];
    [[self tabBar] addSubview:v];
    [v release];

}

4
আপনি যদি কোনও ব্যাকগ্রাউন্ড ছবি দিয়ে এটি সুন্দর করতে চান তবে এটি দেখুন: duivesteyn.net/2010/01/16/iphone-custom-tabbar-background-image
oberbaum

4
আমি মনে করি এটি হওয়া দরকার: [[স্ব-ট্যাববার] ইনসেটসউবভিউ: ভি atIndex: 0];
বিভোর গোয়েল

আমি জানি উত্তরটি পুরানো তবে এটি আমার পক্ষে কাজ করেছিল। যেহেতু আমার রঙের পরিবর্তে একটি কাস্টম চিত্রের প্রয়োজন ছিল, তাই আমি আপনার উত্তরটি বারের
রাফেলডিডিএল

27

আপনি যখন মাত্র অ্যাডসবুউভিউ ব্যবহার করবেন তখন আপনার বোতামগুলি ক্লিকযোগ্যতা হারাবে, পরিবর্তে

[[self tabBar] addSubview:v];

ব্যবহার:

[[self tabBar] insertSubview:v atIndex:0];

7

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


4
স্যার, আপনি আপেল দিয়ে একটি বাগ পূরণ করেছেন?
সাগর আর কোঠারি

7

নিম্নলিখিত এটির জন্য সঠিক সমাধান। এটি আইওএস 5 এবং আইওএস 4 এর জন্য আমার সাথে কাজ করে works

//---- For providing background image to tabbar
UITabBar *tabBar = [tabBarController tabBar]; 

if ([tabBar respondsToSelector:@selector(setBackgroundImage:)]) {
    // ios 5 code here
    [tabBar setBackgroundImage:[UIImage imageNamed:@"image.png"]];
} 
else {
    // ios 4 code here
    CGRect frame = CGRectMake(0, 0, 480, 49);
    UIView *tabbg_view = [[UIView alloc] initWithFrame:frame];
    UIImage *tabbag_image = [UIImage imageNamed:@"image.png"];
    UIColor *tabbg_color = [[UIColor alloc] initWithPatternImage:tabbag_image];
    tabbg_view.backgroundColor = tabbg_color;
    [tabBar insertSubview:tabbg_view atIndex:0];
}

ট্যাবব্রন্টট্রোলার কী তা ইউআইটিবারডেলিগেট অনুসারে কনট্রোলার কি আপনি প্লিজকে ব্যাখ্যা করতে পারবেন?
আইকোডার

7

আইওএস 7 এ:

[[UITabBar appearance] setBarTintColor:[UIColor colorWithRed:(38.0/255.0) green:(38.0/255.0) blue:(38.0/255.0) alpha:1.0]];

আপনার ভিজ্যুয়াল ইচ্ছার উপর নির্ভর করে আমি প্রথমে সেট করার পরামর্শ দিচ্ছি:

[[UITabBar appearance] setBarStyle:UIBarStyleBlack];

বার শৈলী আপনার দেখার সামগ্রী এবং আপনার ট্যাব বারের মধ্যে একটি সূক্ষ্ম পৃথককারী রাখে।


5

[[self tabBar] insertSubview:v atIndex:0]; আমার জন্য পুরোপুরি কাজ করে।


5

আমার পক্ষে ট্যাববারের রঙটি পরিবর্তন করা খুব সহজ: -

[self.TabBarController.tabBar setTintColor:[UIColor colorWithRed:0.1294 green:0.5686 blue:0.8353 alpha:1.0]];


[self.TabBarController.tabBar setTintColor:[UIColor "YOUR COLOR"];

এটা চেষ্টা কর!!!


ভাল কাজ! আপনার জন্য +1
ওয়াইএসআর অনুরাগী


2

কেবল পটভূমির রঙের জন্য

Tabbarcontroller.tabBar.barTintColor=[UIColor redcolour];

বা এটি অ্যাপ ডেলিগেটে

[[UITabBar appearance] setBackgroundColor:[UIColor blackColor]];

ট্যাববারের নির্বাচন না করা আইকনের রঙ পরিবর্তন করার জন্য

আইওএস 10 এর জন্য:

// this code need to be placed on home page of tabbar    
for(UITabBarItem *item in self.tabBarController.tabBar.items) {
    item.image = [item.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}

আইওএস 10 এর উপরে:

// this need to be in appdelegate didFinishLaunchingWithOptions
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor blackColor]];

1

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

1)। যদি আপনি আরও ফ্ল্যাট চেহারার জন্য চকচকে ওভারলে থেকে মুক্তি পেতে চাইছেন তবে:

tabBar.backgroundColor = [UIColor darkGrayColor]; // this will be your background
[tabBar.subviews[0] removeFromSuperview]; // this gets rid of gloss

2)। ট্যাববার বোতামগুলিতে কাস্টম চিত্রগুলি সেট করতে এমন কিছু করুন:

for (UITabBarItem *item in tabBar.items){
    [item setFinishedSelectedImage:selected withFinishedUnselectedImage:unselected];
    [item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];
}

কোথায় selectedএবং unselectedহয় UIImageআপনার পছন্দের বস্তু। যদি আপনি এগুলি একটি সমতল রঙ হতে চান তবে সবচেয়ে সহজ সমাধানটি আমি পেয়েছি UIViewপছন্দসই সাথে একটি তৈরি করা backgroundColorএবং তারপরে UIImageকোয়ার্টজকোরের সহায়তায় এটি একটি রেন্ডার করা । আমি একটি বিভাগ নিম্নলিখিত পদ্ধতি ব্যবহার UIViewএকটি পেতে UIImageদৃশ্য এর বিষয়বস্তু সঙ্গে:

- (UIImage *)getImage {
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [[UIScreen mainScreen]scale]);
    [[self layer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return viewImage;
}

3) অবশেষে, আপনি বোতামগুলির শিরোনামগুলির স্টাইলিং কাস্টমাইজ করতে চাইতে পারেন। কর:

for (UITabBarItem *item in tabBar.items){
    [item setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                [UIColor redColor], UITextAttributeTextColor,
                [UIColor whiteColor], UITextAttributeTextShadowColor,
                [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset,
                [UIFont boldSystemFontOfSize:18], UITextAttributeFont,
            nil] forState:UIControlStateNormal];
}

এটি আপনাকে কিছু সামঞ্জস্য করতে দেয় তবে এখনও বেশ সীমাবদ্ধ। বিশেষত, বোতামের মধ্যে পাঠ্যটি কোথায় রাখা হয়েছে তা আপনি অবাধে সংশোধন করতে পারবেন না এবং নির্বাচিত / নির্বাচিত বোতামগুলির জন্য বিভিন্ন রঙ থাকতে পারে না। আপনি যদি আরও নির্দিষ্ট পাঠ্য বিন্যাস করতে চান তবে কেবল UITextAttributeTextColorপরিষ্কার হতে সেট করুন selectedএবং unselectedঅংশ (2) থেকে চিত্রগুলিতে আপনার পাঠ্য যুক্ত করুন ।



0

আরেকটি সমাধান (যা একটি হ্যাক) তা হল ট্যাববারকন্ট্রোলারের আলফাকে 0.01 তে সেট করা যাতে এটি কার্যত অদৃশ্য হলেও এখনও ক্লিকযোগ্য। তারপরে আলফা'ড ট্যাববারকন্ট্রোলারের নীচে আপনার কাস্টম ট্যাববারের চিত্রটি নিয়ে মেইনওয়াইন্ডো নীবের নীচে একটি চিত্রভিউ নিয়ন্ত্রণ সেট করুন। তারপরে ট্যাববারকন্ট্রোলার দর্শনগুলি স্যুইচ করলে চিত্রগুলি অদলবদল করুন, রঙ পরিবর্তন করুন বা হাইটলাইট।

তবে, আপনি '... আরও' হারান এবং কার্যকারিতা কাস্টমাইজ করেন।


0

হাই, আমি আইওএস এসডিকে 4 ব্যবহার করছি এবং আমি মাত্র দুটি লাইনের কোড দিয়ে এই সমস্যাটি সমাধান করতে সক্ষম হয়েছি এবং এটি এরকম হয়

tBar.backgroundColor = [UIColor clearColor];
tBar.backgroundImage = [UIImage imageNamed:@"your-png-image.png"];

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


0
if ([tabBar respondsToSelector:@selector(setBackgroundImage:)]) {
    // ios 5 code here
    [tabBar setBackgroundImage:[UIImage imageNamed:@"image.png"]];
} 
else {
    // ios 4 code here
    CGRect frame = CGRectMake(0, 0, 480, 49);
    UIView *tabbg_view = [[UIView alloc] initWithFrame:frame];
    UIImage *tabbag_image = [UIImage imageNamed:@"image.png"];
    UIColor *tabbg_color = [[UIColor alloc] initWithPatternImage:tabbag_image];
    tabbg_view.backgroundColor = tabbg_color;
    [tabBar insertSubview:tabbg_view atIndex:0];
}

0

সুইফট ৩.০ উত্তর: (বৈভব গায়কওয়াদ থেকে)

ট্যাববারের অনির্বাচিত আইকনের রঙ পরিবর্তনের জন্য:

if #available(iOS 10.0, *) {
        UITabBar.appearance().unselectedItemTintColor = UIColor.white
    } else {
        // Fallback on earlier versions
        for item in self.tabBar.items! {
            item.image = item.image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
        }
}

শুধুমাত্র পাঠ্যের রঙ পরিবর্তনের জন্য:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.white], for: .normal)

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red, for: .selected)

0

AppDelegateনিম্নলিখিতটি থেকে আপনার উপস্থিতি ব্যবহার করে 3 টি সুইফ্ট করুন :

UITabBar.appearance().barTintColor = your_color

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