কোনও আইওএস 7 স্বচ্ছ ইউআইএনএভিগেশনবারের জন্য উজ্জ্বল, স্বচ্ছ রঙ অর্জন করা


172

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


আইওএস .0.০.৩ আপডেট : আইওএস .0.০.৩ ব্যবহার করার সময় আমরা তৈরি করা গিটহাব লাইব্রেরিটি এই সমস্যাটি নিয়ে সামান্য কাজ করার জন্য আপডেট করা হয়েছে। দুর্ভাগ্যক্রমে, আইওএস 7.0.2 এবং এর আগের এবং আইওএস 7.0.3 এ উভয় রঙের সমর্থন করার জন্য কোনও যাদু সূত্র নেই। অ্যাপলের মতো মনে হয় স্যাচুরেশন উন্নত হয়েছে তবে অস্বচ্ছতার ব্যয়ে (যেহেতু অস্পষ্ট ট্রান্সলুসেন্সিটি ধাপ্পাচ্ছন্নতার স্তরের উপর নির্ভরশীল)। আমি সহ আরও কয়েকজন, এর জন্য আরও ভাল সমাধান তৈরিতে কাজ করছি।


আমি নিশ্চিত যে ইতিমধ্যে আইওএস 7 এমন একটি ইউআইএনএভিগেশনবারের রঙকে বিচ্ছিন্ন করতে পারে যেখানে অনেকগুলি সমস্যা ইতিমধ্যে এসে গেছে।

আমার লক্ষ্য এই রঙিন রঙের সাথে একটি ইউআইএনএভিগেশন বার অর্জন করা, তবে স্বচ্ছ বর্ণযুক্ত:

ইউআইএনএভিগেশন বার, ওপাক

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

ইউআইএনএভিগেশন বার, স্বচ্ছ

স্বচ্ছতার পরেও মূল রঙটি অর্জন করার কোনও উপায় আছে কি? আমি লক্ষ্য করেছি যে ফেসবুকটি এখানে প্রদর্শিত হিসাবে তাদের বারটি তাদের সমৃদ্ধ, নীল রঙ হতে সক্ষম করেছে:

ফেসবুক ইউআইএনএভিগেশনবার, স্বচ্ছ

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

সমাধান সহ আপডেট হয়েছে।

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

////////////////////////////
// CRNavigationBar.m
////////////////////////////

#import "CRNavigationBar.h"

@interface CRNavigationBar ()
@property (nonatomic, strong) CALayer *colorLayer;
@end

@implementation CRNavigationBar

static CGFloat const kDefaultColorLayerOpacity = 0.5f;
static CGFloat const kSpaceToCoverStatusBars = 20.0f;

- (void)setBarTintColor:(UIColor *)barTintColor {
    [super setBarTintColor:barTintColor];
    if (self.colorLayer == nil) {
        self.colorLayer = [CALayer layer];
        self.colorLayer.opacity = kDefaultColorLayerOpacity;
        [self.layer addSublayer:self.colorLayer];
    }
    self.colorLayer.backgroundColor = barTintColor.CGColor;
}

- (void)layoutSubviews {
    [super layoutSubviews];
    if (self.colorLayer != nil) {
        self.colorLayer.frame = CGRectMake(0, 0 - kSpaceToCoverStatusBars, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + kSpaceToCoverStatusBars);

        [self.layer insertSublayer:self.colorLayer atIndex:1];
    }
}

@end

////////////////////////////
// CRNavigationController.m
////////////////////////////

#import "CRNavigationController.h"
#import "CRNavigationBar.h"

@interface CRNavigationController ()

@end

@implementation CRNavigationController

- (id)init {
    self = [super initWithNavigationBarClass:[CRNavigationBar class] toolbarClass:nil];
    if(self) {
        // Custom initialization here, if needed.    
    }
    return self;
}

- (id)initWithRootViewController:(UIViewController *)rootViewController {
    self = [super initWithNavigationBarClass:[CRNavigationBar class] toolbarClass:nil];
    if(self) {
        self.viewControllers = @[rootViewController];
    }

    return self;
}

@end

ফেসবুক আইওএস 7 UINAvigationBarঅস্বচ্ছ নয়?
Vinzzz

না, এটি ডিফল্ট আইওএসের চেয়ে অনেক বেশি সূক্ষ্ম স্বচ্ছতা। আইএমও।
কেভিন

ফেসবুক নেভিগেশন বার স্বচ্ছ নয়
লে সাং

7
এটি অবশ্যই স্বচ্ছ; আমার সম্পাদিত প্রতিক্রিয়া দেখুন দয়া করে।
স্পেসপাইরো

2
@ ওডেলিয়া - এটি সঠিক রঙগুলি পাওয়ার সমাধান নয়, বরং UINavigationBarআইওএস
trans এ

উত্তর:


52

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

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

সংক্ষিপ্তসার: https://gist.github.com/aprato/6631390

setBarTintColor

  [super setBarTintColor:barTintColor];
  if (self.extraColorLayer == nil) {
    self.extraColorLayer = [CALayer layer];
    self.extraColorLayer.opacity = self.extraColorLayerOpacity;
    [self.layer addSublayer:self.extraColorLayer];
  }
  self.extraColorLayer.backgroundColor = barTintColor.CGColor;

layoutSubviews

  [super layoutSubviews];
  if (self.extraColorLayer != nil) {
    [self.extraColorLayer removeFromSuperlayer];
    self.extraColorLayer.opacity = self.extraColorLayerOpacity;
    [self.layer insertSublayer:self.extraColorLayer atIndex:1];
    CGFloat spaceAboveBar = self.frame.origin.y;
    self.extraColorLayer.frame = CGRectMake(0, 0 - spaceAboveBar, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + spaceAboveBar);
  }

আপনি কোথায় ভিউকন্ট্রোলারে এটি প্রয়োগ করেছেন? ভিডিডলয়েডের অধীনে?
জেরেমি

এটি সুন্দরভাবে কাজ করে! আমি আমার UINavigationControllerসাবক্লাসে এটি যুক্ত করার সিদ্ধান্ত নিয়েছি । এখানে একটি ব্যাপার সারকথা যারা একটি কাস্টম থাকার করার জন্য আগ্রহী এটি UINavigationBarএকটি মধ্যে UINavigationController
স্পেসপাইরো

স্পেসপিরোর মতো জেরেমি আমার কাছে একটি ন্যাভ কন্ট্রোলার সাবক্লাস রয়েছে (যা আমি বারের মতো ইউআইএপিয়ার্স টার্গেটিংয়ের জন্য প্রি 7 ব্যবহার করছিলাম) এটি initWithRootViewControllerব্যবহার করতে ওভাররাইড করে। আমি আমার সংক্ষেপটি আপডেট করেছি
অ্যান্টনি

উম ... ঠিক আছে..আপনি কী বোঝাতে চাইছেন তা পুরোপুরি দেখতে আমার একটি সম্পূর্ণ পরীক্ষা প্রকল্পে এটি দেখতে হবে বলে মনে করি। আমি নীচে সময়কারের উদাহরণটির প্রতিলিপি করতে সক্ষম হয়েছি তবে এইটির সাথে আমি এখনও কিছুটা সবুজ।
জেরেমি

1
@ মিঃটি ধন্যবাদ! যখন আমি লিখেছিলাম এটি এখনও ধাক্কা দিচ্ছিল না :) তবে আমি এখনই এটি আপডেট করেছি, এনএসকোডিংয়ের জন্য অস্বচ্ছতা এবং সমর্থনটির জন্য ইউআইএ উপস্থিতি যুক্ত করেছি
অ্যান্টনি

10

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

if(IS_IOS7)
{
    self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    self.navigationController.navigationBar.translucent = NO;
}
else
{
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
}

IS_IOS7 একটি ম্যাক্রো যা পিএইচ ফাইলে নীচে সংজ্ঞায়িত হয়েছে।

#define IS_IOS7 ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0)

9

আমি এই সমাধানটি নিয়ে আসিনি তবে মনে হয় এটি বেশ ভালভাবে কাজ করে। আমি এটি স্রেফ আমার ইউআইএনএভিগেশন কন্ট্রোলারের সাবক্লাসে ডিডলাডে যুক্ত করেছি।

সূত্র: https://gist.github.com/alanzeino/6619253

// cheers to @stroughtonsmith for helping out with this one

UIColor *barColour = [UIColor colorWithRed:0.13f green:0.14f blue:0.15f alpha:1.00f];
UIView *colourView = [[UIView alloc] initWithFrame:CGRectMake(0.f, -20.f, 320.f, 64.f)];
colourView.opaque = NO;
colourView.alpha = .7f;
colourView.backgroundColor = barColour;
self.navigationBar.barTintColor = barColour;
[self.navigationBar.layer insertSublayer:colourView.layer atIndex:1];

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

শিরোনামগুলিও এই স্বচ্ছতার স্তর দ্বারা অস্পষ্ট হয়ে যায়।
নিক লকিং

আমি এই টুকরোটি লিখেছি। মন্তব্যগুলি ঠিক আছে; একটি নতুন ভিউ কন্ট্রোলার যখন চাপানো হয় তখন বাটন আইটেমগুলির নীচে ঠেলা যায় বা সাবলেয়াররা আলফাকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় colourView। আমি অন্য উত্তরটি কাঁটাচামচ করেছি এবং কয়েকটি জিনিসকে একটি নতুন ড্রপ-ক্লাসে স্থির করেছিলাম
অ্যালান জেইনো

আমি স্বচ্ছ ব্ল্যাক নেভিগেশন বার স্টাইল নির্বাচন করে পাঠ্যকে সাদা রাখতে সক্ষম হয়েছি ... এটি আমার পক্ষে কৌশলটি করেছে। আপনার বার.টিন্ট কালারও সেট করুন = [ইউআইকলার হোয়াইট কালার]; উপরের অন্যান্য কাস্টম বোতামগুলির জন্য।
জুয়ান জামোরা

6

একটি লো-ফাই উপায় সম্ভবত পিনিং করবে UIViewযা বারের পিছনের দৃশ্যের শীর্ষে নেভিগেশন বারের উচ্চতা। সেই দৃশ্যটি ন্যাভিগেশন বারের মতো একই রঙ করুন তবে আপনি পছন্দসই প্রভাব না পাওয়া পর্যন্ত আলফা সাথে খেলুন:

UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.navigationController.navigationBar.frame), 64)];
    backgroundView.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:1 alpha:.5];

[self.navigationController.view insertSubview:backgroundView belowSubview:self.navigationController.navigationBar];

পিছনে ইউআইভিউ

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

(নিম্ন উদাহরণ থেকে জোর স্বচ্ছতার দিকে রঙ পরিবর্তন করা হয়েছে movement চলাফেরায় স্বচ্ছতা / অস্পষ্টতা আরও লক্ষণীয়))

সাবক্ল্যাসিং করা UINavigationBarএবং পটভূমির উপরে কিন্তু একইরকম দৃষ্টিভঙ্গি স্থাপন অন্য সবকিছুর পিছনে কম হ্যাকি হওয়ার সময় সম্ভবত একইরকম ফলাফল অর্জন করবে।


আর একটি সমাধান যা আমি আশেপাশে ছুঁড়েছি তা হল আলফার সাথে খেলছে UINavigationBar:

self.navigationController.navigationBar.alpha = 0.5f;

সম্পাদনা: প্রকৃতপক্ষে, পরীক্ষার পরে মনে হচ্ছে এটি উদ্দেশ্যমূলক আচরণ (বা কোনও আচরণ) সরবরাহ করে না:

.8 আলফা

.8 আলফা সহ নেভিগেশন বার

অযৌক্তিক আলফা

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

স্পষ্টতই, আপনি কেবল iOS 7 ডিভাইসে এটি করতে চাইবেন। সুতরাং, এগুলির কোনও প্রয়োগের আগে কিছু সংস্করণ চেক যুক্ত করুন


আপনি যে রঙটি সন্ধান করছেন তা পাওয়ার জন্য আমি আলফা এবং টিন্ট কালার আপডেট করার পদ্ধতিকে দ্বিতীয় করব।
স্টুয়ার্টএম

যদি আপনি সেই কম আক্রমণাত্মক উপায়ে পছন্দসই প্রভাব পেতে পারেন তবে পুরোপুরি। তবে আমি নিশ্চিত না যে এটি কতটা কার্যকর হবে।
কেভিন

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

উফফফ, এখন দেখছি। হওয়া উচিত[self.navigationController.view insertSubview:backgroundView belowSubview:self.navigationController.navigationBar];
কেভিন

হ্যাঁ, আমি বুঝতে পেরেছিলাম যে আপনি কী বোঝাতে চেয়েছিলেন ;) এটি অবশ্যই আমাকে বেছে নিতে আরও ভাল স্প্যান দেয়। আসল রঙের কম্পন পাওয়া সম্ভবত অসম্ভব যে এই অস্পষ্ট প্রভাবটি এখনও এর অধীনে যে কোনও কিছুকে বিস্মৃত করে। আমি আপাতত একটি গা color় রঙ সঙ্গে বাস করতে হবে।
স্পেসপাইরো

4

আরজিবি ফর্ম্যাটে আপনার ইউআইকোলার অবজেক্ট তৈরি করার পরিবর্তে এইচএসবি ব্যবহার করুন এবং স্যাচুরেশন প্যারামিটারটি বাড়ান। ( এই পদ্ধতিটি এখানে বর্ণনা করে এমন কৃতিত্ব স্যাম সোফেসকে )

navigationBar.barTintColor = [UIColor colorWithHue:0.555f saturation:1.f brightness:0.855f alpha:1.f];

দ্রষ্টব্য: এই সমাধানটি একটি ট্রেডঅফ এবং উচ্চ স্যাচুরেশন সহ রঙগুলির জন্য ভাল কাজ করে না।

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

বিদ্যমান রঙগুলিকে সংশোধন করতে আপনি ডেভিড কেগান থেকে ইউআইকোলার বিভাগ ( গিটহাব লিঙ্ক ) চেষ্টা করে দেখতে পারেন ।


3

অ্যাপল নতুন release.০.৩ প্রকাশে এখন সমস্যাটি স্থির করেছে।


1
হ্যাঁ, তাদের রঙিন রঙের বাস্তবায়ন অবশ্যই 7.0.3 এ পরিবর্তিত হয়েছে। আমি এখন প্রায় 10-15% দ্বারা স্যাচুরেশন বাধা দিয়ে আমার পছন্দসই রঙ অর্জন করতে পারি। আমি অতিরিক্ত স্তর বিজ্ঞাপন করার আগে।
মতেজ বুকভিনস্কি

আমাকে জানতে দেওয়ার জন্য ধন্যবাদ! আমি এটির জন্য আমার লাইব্রেরিতে একটি আপডেট চাপ দিচ্ছি।
স্পেসপাইরো

1
এবং 7.1> _ <
লিও নাটান

1

আমি @ aprato এর সমাধান ব্যবহৃত কিন্তু কয়েক কোণ ক্ষেত্রে যেখানে নতুন ভিসি থেকে নতুন স্তর (যেমন। পাওয়া UINavigationItemButtonViews, UINavigationItemViewsইত্যাদি) স্বয়ংক্রিয়ভাবে নিচে একটি অবস্থান ঢোকানো হবে extraColorLayer(যা কারণ হবে সেই উপাধি বা বোতাম উপাদান দ্বারা প্রভাবিত হতে পারে extraColorLayerএবং এইভাবে তারা সাধারণত তুলনায় রঙে বেহুদা)। সুতরাং আমি @ আপ্রাটোর সমাধানটি extraColorLayerসূচক পজিশনে থাকতে বাধ্য করার জন্য 1 সামঞ্জস্য করেছি index সূচক পজিশনে 1, extraColorLayerডানদিকে ঠিক থাকে _UINavigationBarBackground, তবে সমস্ত কিছুর নীচে।

এখানে আমার ক্লাস বাস্তবায়ন:

- (void)setBarTintColor:(UIColor *)barTintColor
{
    [super setBarTintColor:barTintColor];
    if (self.extraColorLayer == nil)
    {
        self.extraColorLayer = [CALayer layer];
        self.extraColorLayer.opacity = kDefaultColorLayerOpacity;
        [self.layer insertSublayer:self.extraColorLayer atIndex:1]; // This way the text comes out clear
    }
    self.extraColorLayer.backgroundColor = barTintColor.CGColor;
}

- (void)layoutSubviews
{
    [super layoutSubviews];
    if (self.extraColorLayer != nil)
    {
        self.extraColorLayer.frame = CGRectMake(0, 0 - kSpaceToCoverStatusBars, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + kSpaceToCoverStatusBars);
    }
}

- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview
{
    [super insertSubview:view aboveSubview:siblingSubview];
    [self.extraColorLayer removeFromSuperlayer];
    [self.layer insertSublayer:self.extraColorLayer atIndex:1]; // This way the text comes out clear
}

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index
{
    [super insertSubview:view atIndex:index];
    [self.extraColorLayer removeFromSuperlayer];
    [self.layer insertSublayer:self.extraColorLayer atIndex:1]; // This way the text comes out clear
}

- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview
{
    [super insertSubview:view belowSubview:siblingSubview];
    [self.extraColorLayer removeFromSuperlayer];
    [self.layer insertSublayer:self.extraColorLayer atIndex:1]; // This way the text comes out clear
}

যেহেতু স্তরগুলি এবং সাবভিউগুলি মিশ্রিত নয়, আমি অ্যাডসবুউ ভিউকে ওভারলোডিংয়ের প্রয়োজন নেই
রব ভ্যান ডের ভিয়ার

1

আমি আমার কাঁটাচামুতে আপনার কোডটি উন্নত করেছি: https://github.com/allenhsu/CR নেভিগেশন নিয়ন্ত্রণকারী

আমার পরিবর্তনের সাথে, স্ক্রিনের ফলাফলের রঙ (সাদা পটভূমিতে বাছাই করা) ঠিক একই মান হিসাবে প্রবেশ করবে setBarTintColor। আমি মনে করি এটি একটি আশ্চর্যজনক সমাধান।


@ জোর্দান ব্রাউন 7.1 এবং 8
অ্যালেন

0

এই হ্যাকগুলির কোনওটির প্রয়োজন নেই :)। সহজভাবে সেট করুন:

self.navigationController.navigationBar.translucent = NO;

আইওএস 7 এর জন্য, ডিফল্ট ট্রান্সলুয়েন্সিকে সত্যে রাখা হয়েছে।


17
তবে প্রশ্নটির পাশাপাশি ট্রান্সলুসেন্সিরও প্রয়োজন।
লিও নাটান

:) ধন্যবাদ, এটি আমার পক্ষে কাজ করেছে। তবে এনএভি বারের নীচে 1px কালো নীচের সীমানা রয়েছে। এটা মুছে ফেলার জন্য কোনো উপায় আছে কি?
প্রীতেশ দেশাই

0

সম্পর্কিত নোটে, আপনি সহজেই এর মাধ্যমে আপনার শিরোনাম পাঠ্যের রঙ (ছায়া সহ) সেট করতে পারেন:

NSShadow *titleShadow = [[NSShadow alloc] init];
titleShadow.shadowOffset = CGSizeMake(0.0f, -1.0f);
titleShadow.shadowColor = [UIColor blackColor];
NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor],
                                            NSShadowAttributeName: titleShadow};
[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

1
আপনি যদি আইওএস 7 এর স্টাইলটি মেলানোর চেষ্টা করছেন, আপনার শিরোনাম পাঠ্যে একটি ড্রপ ছায়া ব্যবহার করা সম্ভবত অনুপযুক্ত।
নিক লকিং

আপনি ঠিক বলেছেন, আইওএস 7-এ অ্যাপল আর তাদের নাবারবার পাঠ্যে ছায়া গোছাচ্ছে না। আপনি যদি কোনও কাস্টম চেহারা চান তবে এটি আপনাকে বিকল্প দেবে।
bryguy1300

0

আইওএস on এ অক্ষম হওয়া স্বচ্ছতার সাথে অভিন্ন রঙিন নেভিগেশন বার সেটআপ করার চেষ্টা করার সময় আমি এই প্রশ্নোত্তর পেরিয়ে এসেছি।

বারটিন্টকালোর সাথে কিছুক্ষণ পরীক্ষা করার পরে আমি বুঝতে পারলাম যে একটি অস্বচ্ছ নেভিগেশন বার রাখার খুব সহজ উপায় হ'ল কাঙ্ক্ষিত রঙের একক পিক্সেল চিত্র তৈরি করা, এটির থেকে প্রসারিত চিত্র তৈরি করা এবং পটভূমিতে সেট করা নেভিগেশন বারের চিত্র ।

UIImage *singlePixelImage = [UIImage imageNamed:@"singlePixel.png"];
UIImage *resizableImage = [singlePixelImage resizableImageWithCapInsets:UIEdgeInsetsZero];
[navigationBar setBackgroundImage:resizableImage forBarMetrics:UIBarMetricsDefault]; 

তিনটি লাইন কোড, খুব সহজ এবং আইওএস 6 এবং আইওএস 7 এর মধ্যে দুটি কাজ করে (বারটিন্টকালার আইওএস 6 এ অসমর্থিত)।


0

সাইমন বুথ থেকে একটি দুর্দান্ত ড্রপিন ইউআইএনএভিগেশন কন্ট্রোলার রিপ্লেসমেন্ট রয়েছে যা গিটহাব এখানে গিটহাব-সি 360 নেভিগেশনবারে উপলভ্য

আপনি যদি পশ্চাদপসরণকারী iOS6 সমর্থন করছেন তবে রুট ভিউ নিয়ন্ত্রণকারী হিসাবে এটি পরীক্ষা করুন:

পেন্টেন্টলিস্টেবল ভিউকন্ট্রোলার * ফ্রন্টভিউকন্ট্রোলার = [[পেন্টেন্টলিস্ট টেবিলভিউ কনট্রোলার বরাদ্দ] init];

    UINavigationController *navViewController = [[UINavigationController alloc] initWithNavigationBarClass:[C360NavigationBar class] toolbarClass:nil];
if ([navViewController.view respondsToSelector:@selector(setTintColor:)]) {
    //iOS7
    [navViewController.view setTintColor:self.navBarTintColor];
    [[C360NavigationBar appearance] setItemTintColor:self.navBarItemTintColor];
} else {
    //iOS6
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
    navViewController.navigationBar.tintColor = self.navBarTintColor;
}
[navViewController pushViewController:frontViewController animated:NO];

self.window.rootViewController = navViewController;

আমি যদি কিছু মিস করি না তবে এই লাইব্রেরির বারগুলি স্বচ্ছ নয়।
রিভেরা

0

@ বার্নহার্ড উপরে উল্লিখিত হিসাবে পছন্দসই নেভিগেশন বারের উপস্থিতি পেতে বার টিন্টের রঙটি পূরণ করা সম্ভব।

আমি এই জাতীয় সমন্বয়ের জন্য একটি বার্টিন্ট কালারআপটিমাইজার ইউটিলিটি লিখেছি । এটি আইওএস x.x এবং তার পরে বর্ণের পছন্দসই রঙের সাথে বারটির আসল রঙটি মেলে তুলতে ট্রান্সফুল্যান্ট বার টিন্টের রঙটি অনুকূল করে। তাকান এই উত্তরটি বিস্তারিত জানার জন্য।


-1

স্পষ্টভাবে বলতে গেলে, উপরের উত্তরগুলি সঠিক হতে পারে তবে নিম্নলিখিত কৌশলগুলি খুব সহজেই আমার পক্ষে কাজ করেছিল worked

// this is complete 100% transparent image
self.imageBlack = [[UIImage imageNamed:@"0102_BlackNavBG"] 
           resizableImageWithCapInsets:UIEdgeInsetsMake(0, 2, 0, 2)  
                          resizingMode:UIImageResizingModeStretch];

// this is non-transparent but iOS7 
// will by default make it transparent (if translucent is set to YES)
self.imageRed = [[UIImage imageNamed:@"0102_RedNavBG"] 
         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 2, 0, 2)  
                        resizingMode:UIImageResizingModeStretch];

// some navigation controller
[nvCtrLeft.navigationBar setBackgroundImage:self.imageRed 
                              forBarMetrics:UIBarMetricsDefault];

// some another navigation controller
[nvCtrCenter.navigationBar setBackgroundImage:self.imageRed 
                                forBarMetrics:UIBarMetricsDefault];

এখানে self.imageRedএবং এর জন্য ব্যবহৃত চিত্রগুলি self.imageBlack

< self.imageBlack> কালো চিত্রটি এই বন্ধনীগুলিতে স্বচ্ছ হওয়ায় দৃশ্যমান হবে না :)

< self.imageRed> লাল চিত্রটি এই বন্ধনীগুলিতে রয়েছে।


এটি আপনাকে অস্পষ্টতা দেয় না।
অর্টউইন জেন্টজ

-1

ইউএনএভিগেশনবারকে সাবক্লাসিং না করেই @ অ্যাপ্রোটো সমাধানটি ব্যবহার করার কোনও উপায় আছে?

আমার প্রকল্পে আমার প্রধান দর্শনটি ইউআইভিউউকন্ট্রোলার ler

সমস্যাটি হ'ল নেভিগেশনকন্ট্রোলার একটি পঠনযোগ্য সম্পত্তি, আমার প্রকল্পের সাথে আপনাকে ক্লাস ব্যবহার করার কোনও উপায় আছে কারণ আমি ব্যবহার করতে পারি না: [[UINavigationController alloc] initWithNavigationBarClass:

ধন্যবাদ


আপনি কি কেবল UIViewControllerএকটি UINavigationControllerদিয়ে নিজের ভিতরে গুটিয়ে রাখতে পারবেন না [[[UINavigationController alloc] initWithRootViewController:<YourViewController>]? এটি এখানে পোস্ট না করে আলাদা প্রশ্ন হিসাবে ভাল উত্তর দেওয়া যেতে পারে।
স্পেসপাইরো

-2

আপনি যে রঙটি চান তা পেতে একটি সহজ উপায় ব্যবহার করছেন

    [<NAVIGATION_BAR> setBackgroundImage:<UIIMAGE> forBarPosition:<UIBARPOSITION> barMetrics:<UIBARMETRICS>];

যতক্ষণ না আপনার ছবিতে কিছু আলফা থাকবে ততক্ষেত্রে রূপান্তর কাজ করবে এবং আপনি চিত্র পরিবর্তন করে আলফা সেট করতে পারবেন। এটি সবেমাত্র আইওএস 7 এ যুক্ত হয়েছিল। চিত্রটির প্রস্থ এবং উচ্চতা উল্লম্ব জন্য 640x88px হয় (আপনি যদি চান তা স্ট্যাটাস বারের নীচে হতে চান 88 তে 20 যোগ করুন)।


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