আইওএস 7 ইউআইবারবাটন পিছনের বোতামের তীর রঙ


172

আমি পিছনের বোতামের তীরটি পরিবর্তন করার চেষ্টা করছি

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

আমি বর্তমানে নীচের অংশটি পাঠ্যের আকারের পাশাপাশি পিছনের বোতামের পাঠ্য রঙটি নিয়ন্ত্রণ করতে ব্যবহার করছি:

[[UIBarButtonItem appearance] setTitleTextAttributes:
  [NSDictionary dictionaryWithObjectsAndKeys:
    [UIColor whiteColor], UITextAttributeTextColor,
    [UIFont boldSystemFontOfSize:16.0f], UITextAttributeFont,
    [UIColor darkGrayColor], UITextAttributeTextShadowColor,
    [NSValue valueWithCGSize:CGSizeMake(0.0, -1.0)], UITextAttributeTextShadowOffset,
  nil] forState:UIControlStateNormal];

তবে আমি যদি পিছনের বোতামের জন্য কেবল তীরের রঙটি পরিবর্তন করতে চাই তবে আমার কী করা উচিত?


পিছনের বোতামটির জন্য তীরের রং পরিবর্তন করার কোনও সমাধান খুঁজে পেয়েছেন?
ওঙ্কারক

1
@ ওমকে আমি আমার ইনফোলিস্টপ্রোপার্টি নাভিবার কালারটি কাজ করার জন্য পরিবর্তন করে শেষ করেছি এবং তারপরে প্রকৃত নববারকালারটিকে অন্য রঙে সেট করেছি। কী হচ্ছে তা আমি নিশ্চিত নই, তবে সেই সমাধানটি আমার পক্ষে কাজ করেছে
কেভিনল

1
UINavigationBarআইওএস থেকে কিছু বৈশিষ্ট্য পরিবর্তিত হয়েছে 7.. কিছু অন্যান্য বৈশিষ্ট্যের প্রভাব দেখতে উত্তরটি দেখুন ।
ভাবিন

দয়া করে এই সমস্যার সঙ্গে সাহায্য: stackoverflow.com/questions/29923813/...
Milos Kresović

উত্তর:


438

নির্দিষ্ট নেভিগেশন নিয়ামক * এর জন্য পিছনের বোতাম শেভ্রন রঙ পরিবর্তন করতে:

self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

* আপনি যদি 1 টিরও বেশি নেভিগেশন নিয়ামক সহ একটি অ্যাপ্লিকেশন ব্যবহার করছেন এবং আপনি প্রতিটি শেভ্রন রঙটি প্রতিটিটিতে প্রয়োগ করতে চান তবে আপনি প্রতিটি নেভিগেশন নিয়ামকের জন্য ব্যাক বোতাম শেভরন সেট করতে উপস্থিতি প্রক্সিটি ব্যবহার করতে পারেন:

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

এবং ভাল পরিমাপের জন্য, দ্রুতগতিতে (মন্তব্যে জে মায়ুর ধন্যবাদ):

UINavigationBar.appearance().tintColor = UIColor.whiteColor()

3
আপনি কেবল আপনার সম্পূর্ণ অ্যাপ্লিকেশনের জন্য একই ন্যাভিগেশন কন্ট্রোলার ব্যবহার করা হলে এটি কেবল পুরো অ্যাপ্লিকেশন জুড়েই প্রযোজ্য। আমি আসলে বার্টের পরামর্শটি সুপারিশ করি।
কাইল Clegg

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

1
এটি ব্যাক শেভ্রনের রঙ সেট করে বলে মনে হচ্ছে না।
jcampbell1

2
@ জ্যাক্যাম্পবেল 1 - আমি আমার বেশ কয়েকটি অ্যাপ্লিকেশনে এটি সফলভাবে ব্যবহার করছি ... সম্ভবত আপনি একাধিক ইউআইএনএভিগেশন কন্ট্রোলার সম্পর্কে ক্যাভ্যাটটি পড়েন নি।
ডিস্কদেভ

7
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
দ্রুততার

57

আপনাকে পুরো অ্যাপ্লিকেশনটির টিন্ট কালার সেট করতে হবে।

self.window.tintColor = [UIColor redColor];

বা সুইফ্ট 3 এ:

self.window?.tintColor = UIColor.blue

উত্স: আইওএস 7 ইউআই ট্রানজিশন গাইড


4
যদি আপনি কেবল আসল প্রশ্নে বর্ণিত ব্যাক বোতাম শেভ্রনের রঙ (এবং পুরো অ্যাপ্লিকেশনটি নয়) সেট করতে চান তবে এটি ভুল উত্তর। : আমার উত্তর এখানে সঠিক উত্তরের জন্য দেখুন stackoverflow.com/a/18809412/1103584
DiscDev

আমি আমার অ্যাপের প্রতিনিধিটিতে এটি আমার পিছনের বোতামগুলি কালোতে পরিবর্তন করতে ব্যবহার করেছি। অ্যাপ্লিকেশনটিতে রাখুন ডিডফিনিশলঞ্চিং উইথঅ্যাপশন পদ্ধতি ... উইন্ডো.টিন্ট কালার = [ইউআইসি কালার ব্ল্যাক কালার];
মার্ক ওয়াটসন

এটি আইওএস-এ কাজ করতে পারে না 6 কেউ কী করতে হবে জানেন?
গাভজর

1
এটি এটি পুরো অ্যাপ্লিকেশনটির টিন্ট কালারকে প্রভাবিত করে, যার মধ্যে কোনও ইউআইএসিটিভিটিভিউ কনট্রোলার (ভাগ করার জন্য) এবং এমএফমেইলকম্পোজভিউ কনট্রোলার (ইমেল প্রেরণের জন্য) অন্তর্ভুক্ত রয়েছে। এই কথোপকথনগুলি ধরে নিয়েছে যে টিন্ট কালারটি .... এর সাথে কোনও সংশোধন করা হয়নি এবং এর ফলে কিছু কুরুচিপূর্ণ রঙের ইন্টারঅ্যাকশন হতে পারে।
মাইক ল্যামবার্ট

এটি জ্বলজ্বলে কার্সার হিসাবে অনেক অন্যান্য অবজেক্টের রঙের রঙ পরিবর্তন করে UITextField। অবশ্যই সুপারিশ করা হয় না।
হান্টার সন্ন্যাসী

55

আপনি পদ্ধতিটি ব্যবহার করে পুরো অ্যাপ নেভিগেশন বারে রঙ সেট করতে পারেন

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions{
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
}

23

কেবলমাত্র তীরের রং (পিছনে বোতামের শিরোনামের রঙ নয়) পরিবর্তন করা সম্ভব:

[[self.navigationController.navigationBar.subviews lastObject] setTintColor:[UIColor blackColor]];

নেভিগেশন বারে _UINavicationBarBackIndicatorView প্রকারের (সাবউভিউ অ্যারেতে শেষ আইটেম) সাবউভি রয়েছে যা তীরকে উপস্থাপন করে।

ফলাফল হ'ল নেভিগেশন বার যা বিভিন্ন রঙের পিছনে বোতামের তীর এবং পিছনের বোতামের শিরোনাম


4
সিস্টেম ভিউগুলির সাবভিউয়ের ক্রমের উপর নির্ভর করে একটি খারাপ ধারণা।
গ্লেন মেইনার্ড

2
এটি কাজ করেছিল, যখন স্ব.নিভিশনকন্ট্রোলআরভিগেশন বার.টিন্ট কালার সেট করে কাজ করেনি।
ধনী ফক্স

@ গ্লেনমায়নার্ড আপনি ঠিক বলেছেন implement এটি বাস্তবায়নের সর্বোত্তম উপায় হ'ল self.navigationController.navigationBar.subviewsপিছনের বোতামটি না পাওয়া পর্যন্ত ফিরে আসা সংক্ষিপ্তসারগুলির অ্যারে দিয়ে পুনরাবৃত্তি করা ।
ইভান আর

@ ইভানআর যখন সেলমাদের সমাধানটি আমার পক্ষে কাজ করেছিল তখন সাবভিউয়ের অ্যারে দিয়ে পুনরাবৃত্তি হয়নি (যা আমি প্রথমে চেষ্টা করেছি কারণ আমি আপনাকে সম্মত করি যে এটি করা বুদ্ধিমানের হবে)। যদি এটি আপনার পক্ষে কাজ করে তবে দয়া করে একটি উদাহরণ যুক্ত করুন। ধন্যবাদ।
জংলেদেব

22

আপনি যদি স্টোরিবোর্ডগুলি ব্যবহার করছেন তবে আপনি নেভিগেশন বারের রঙিন রঙ সেট করতে পারেন।

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

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


ঠিক আমি খুঁজছেন ছিল কি. ধন্যবাদ!
চাদ লুইস

11

নেভিগেশনকন্ট্রোলার সূচনা করে যে রুটভিউ কনট্রোলারের অভ্যন্তরে আমি এই কোডটি আমার ভিউডিডঅ্যাপার পদ্ধতির ভিতরে রেখেছি:

//set back button color
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];
//set back button arrow color
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];

2
ইউআইটিএফটিঅ্যাট্রিবিউট টেক্সট কালার আইওএস 7 এ অবমূল্যায়ন করা হয়েছে
এনএসফোরগ্রাউন্ডকালারঅ্যাট্রিবিউটনাম

7

আইওএস 6-এ, টিন্টকলার নেভিগেশন বার, ট্যাব বার, টুলবার, অনুসন্ধান বার এবং স্কোপ বারগুলির পটভূমি রঙিন করেছিল। আইওএস in এ একটি বারের পটভূমিতে রঙিন করতে, পরিবর্তে বারটিন্টকালার বৈশিষ্ট্যটি ব্যবহার করুন।

আইওএস 7 ডিজাইনের সংস্থানগুলি আইওএস 7 ইউআই ট্রানজিশন গাইড


2
এটিই সেইটি! ... এটি অ্যাপের প্রতিনিধিতে রাখুন। একটি যাদুমন্ত্র মত কাজ করে! উইন্ডো.টিন্ট কালার = [ইউআইকলার ব্ল্যাক কালার]; // আমি কালো চেয়েছিলাম
মার্ক ওয়াটসন

6

আপনি tintColorবোতামটি (বা বার বোতাম আইটেম) বা দেখুন নিয়ামকের ভিউতে সম্পত্তি সেট করতে পারেন । ডিফল্টরূপে, সম্পত্তিটি UIWindowআপনার অ্যাপের শীর্ষ স্তরের সমস্ত ক্ষেত্রে প্যারেন্ট ভিউ থেকে রঙের উত্তরাধিকারী হবে ।


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

কিভাবে এই কাজ করতে একটি বিযুক্ত উদাহরণস্বরূপ আমার উত্তর দেখুন: stackoverflow.com/a/18809412/1103584
DiscDev

5

আমি উভয় ব্যবহার করতে হবে:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] 
                     setTitleTextAttributes:[NSDictionary 
               dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] 
                                   forState:UIControlStateNormal];

[[self.navigationController.navigationBar.subviews lastObject] setTintColor:[UIColor whiteColor]];

এবং আমার জন্য কাজ করে, সবার জন্য আপনাকে ধন্যবাদ!


5
UINavigationBar *nbar = self.navigationController.navigationBar;

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
   //iOS 7
   nbar.barTintColor = [UIColor blueColor]; // bar color
   //or custom color 
   //[UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];

   nbar.navigationBar.translucent = NO;

   nbar.tintColor = [UIColor blueColor]; //bar button item color

} else {
   //ios 4,5,6
   nbar.tintColor = [UIColor whiteColor];
   //or custom color
   //[UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];

}

গ্রেট। এটা আমাকে সাহায্য করেছে। ধন্যবাদ
যোগেশ লোলসারে

4

সুইফট 3 আপডেট করুন

navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.yellow
navigationController?.navigationBar.tintColor = UIColor.red
navigationController?.navigationBar.barTintColor = UIColor.gray
navigationController?.navigationBar.titleTextAttributes =  [NSForegroundColorAttributeName: UIColor.blue]

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


3

কেবল NavigationBarরঙ পরিবর্তন করতে আপনি নীচের মতো রঙিন রঙ সেট করতে পারেন।

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

এটি আইওএস-এ রঙিন রঙকে প্রভাবিত করবে না the ডক্স অনুসারে: "উপস্থিতি প্রক্সি এপিআই ব্যবহার করে টিন্টকলার সম্পত্তি সেট করা আইওএস 7 এ সমর্থন করে না" " লিঙ্ক
bachonk

3

আপনি যদি তীরের চিত্র সহ UIButton এ কাস্টম ব্যাক বোতামটি তৈরি করছেন তবে সাবক্লাস স্নিপেট এখানে। এটি ব্যবহার করে আপনি হয় কোডে বোতাম তৈরি করতে পারেন বা কেবল কোনও ইউআইবাটনকে ইন্টারফেস বিল্ডারে ক্লাস বরাদ্দ করতে পারেন। পিছনে তীর চিত্রটি স্বয়ংক্রিয়ভাবে যুক্ত হবে এবং পাঠ্যের রঙের সাথে রঙিন হবে।

@interface UIImage (TintColor)

- (UIImage *)imageWithOverlayColor:(UIColor *)color;

@end


@implementation UIImage (TintColor)

- (UIImage *)imageWithOverlayColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0.0f, 0.0f, self.size.width, self.size.height);

    if (UIGraphicsBeginImageContextWithOptions) {
        CGFloat imageScale = 1.0f;
        if ([self respondsToSelector:@selector(scale)])
            imageScale = self.scale;
        UIGraphicsBeginImageContextWithOptions(self.size, NO, imageScale);
    }
    else {
        UIGraphicsBeginImageContext(self.size);
    }

    [self drawInRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetBlendMode(context, kCGBlendModeSourceIn);

    CGContextSetFillColorWithColor(context, color.CGColor);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

@end




#import "iOS7backButton.h"

@implementation iOS7BackButton

-(void)awakeFromNib
{
    [super awakeFromNib];

    BOOL is6=([[[UIDevice currentDevice] systemVersion] floatValue] <7);
    UIImage *backBtnImage = [[UIImage imageNamed:@"backArrow"] imageWithOverlayColor:self.titleLabel.textColor];
    [self setImage:backBtnImage forState:UIControlStateNormal];
    [self setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
    [self setImageEdgeInsets:UIEdgeInsetsMake(0, is6?0:-10, 0, 0)];


}


+ (UIButton*) buttonWithTitle:(NSString*)btnTitle andTintColor:(UIColor*)color {
    BOOL is6=([[[UIDevice currentDevice] systemVersion] floatValue] <7);
    UIButton *backBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 30)];
    UIImage *backBtnImage = [[UIImage imageNamed:@"backArrow"] imageWithOverlayColor:color];
    [backBtn setImage:backBtnImage forState:UIControlStateNormal];
    [backBtn setTitleEdgeInsets:UIEdgeInsetsMake(0, is6?5:-5, 0, 0)];
    [backBtn setImageEdgeInsets:UIEdgeInsetsMake(0, is6?0:-10, 0, 0)];
    [backBtn setTitle:btnTitle forState:UIControlStateNormal];
    [backBtn setTitleColor:color /*#007aff*/ forState:UIControlStateNormal];

    return backBtn;
}

@end

পিছনে বোতামের চিত্র @ 2x


3

আপনি যদি পুরো অ্যাপটিতে কেবল পিছনের তীরের বুট পরিবর্তন করতে চান তবে এটি করুন:

[[NSClassFromString(@"_UINavigationBarBackIndicatorView") appearance] 
  setTintColor:[UIColor colorWithHexString: @"#f00000"]];

একটা সুযোগ এই পেতে হবে আপনি অ্যাপ স্টোর থেকে প্রত্যাখ্যাত Theres
লুক

@ লুক, আমি বেশ কয়েকবার সফলভাবে এটি ব্যবহার করেছি। কোন প্রত্যাখ্যান। তবে, হ্যাঁ, সুযোগ এখনও আছে।
orkenstein

এটি এখনও ভবিষ্যতের আইওএস সংস্করণে ভেঙে যাওয়ার সম্ভাবনা রয়েছে
লোপ

1
@ লপ, হ্যাঁ, কেন না। আমি সিলভার বুলেট খুঁজছি না
অরকেনস্টাইন

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

2

আইওএস 7-তে, আপনি application:didFinishLaunchingWithOptions:আপনার AppDelegate.mফাইলের মধ্যে নিম্নলিখিত কোডের লাইনটি রাখতে পারেন :

[[UINavigationBar appearance] setTintColor:myColor];

myColorআপনি পুরো অ্যাপ্লিকেশন জুড়ে পিছনের বোতামটি থাকতে চান এমন রঙে সেট করুন। এটি প্রতিটি ফাইলের মধ্যে লাগানোর দরকার নেই।


0

সুইফট ২.০: রঙিন নেভিগেশন বার এবং বোতাম

navigationController?.navigationBar.barTintColor = UIColor.blueColor()
navigationController?.navigationBar.tintColor = UIColor.whiteColor()
navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]

0

সুইফ্ট 3-এ, ইউআইবারবার বাটন ব্যাক বোতামের তীর রঙ পরিবর্তন করতে

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