আমি লক্ষ্য করেছি যে সাফারি এবং মেল এর মতো কিছু অ্যাপ্লিকেশন যখন নেটওয়ার্কটি অ্যাক্সেস করছে তখন স্ট্যাটাস বারে (ফোনের একেবারে শীর্ষে বার) একটি লোডিং সূচক দেখায়। এসডিকে অ্যাপগুলিতে একই জিনিস করার কোনও উপায় আছে, বা এটি কেবল একটি অ্যাপল জিনিস?
আমি লক্ষ্য করেছি যে সাফারি এবং মেল এর মতো কিছু অ্যাপ্লিকেশন যখন নেটওয়ার্কটি অ্যাক্সেস করছে তখন স্ট্যাটাস বারে (ফোনের একেবারে শীর্ষে বার) একটি লোডিং সূচক দেখায়। এসডিকে অ্যাপগুলিতে একই জিনিস করার কোনও উপায় আছে, বা এটি কেবল একটি অ্যাপল জিনিস?
উত্তর:
এটি ইউআইএ প্রয়োগের মধ্যে রয়েছে:
উদ্দেশ্য সি এর জন্য:
শুরু করুন:
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
শেষ:
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
দ্রুত জন্য:
শুরু
UIApplication.shared.isNetworkActivityIndicatorVisible = true
শেষ
UIApplication.shared.isNetworkActivityIndicatorVisible = false
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
// ওয়ান লাইনার হিসাবে
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
আমি নিম্নলিখিত ম্যাক্রোগুলি বেশ কার্যকর খুঁজে পেয়েছি!
#define ShowNetworkActivityIndicator() [UIApplication sharedApplication].networkActivityIndicatorVisible = YES
#define HideNetworkActivityIndicator() [UIApplication sharedApplication].networkActivityIndicatorVisible = NO
সুতরাং আপনি কেবল কল করতে পারেন ShowNetworkActivityIndicator();
বা HideNetworkActivityIndicator();
আপনার অ্যাপের মধ্যে থেকে (যতক্ষণ না শিরোনাম অবশ্যই অন্তর্ভুক্ত থাকে!)।
আমি একটি সিঙ্গলটন লিখেছি যা ঘটছে তার পাল্টা রেখে একাধিক সংযোগের সমস্যার সমাধান করে (কোনও সংযোগ ফেরার পরে স্থিতিটি অপসারণ এড়াতে কিন্তু অন্যটি এখনও সক্রিয় থাকে):
শিরোনাম ফাইল:
#import <Foundation/Foundation.h>
@interface RMActivityIndicator : NSObject
-(void)increaseActivity;
-(void)decreaseActivity;
-(void)noActivity;
+(RMActivityIndicator *)sharedManager;
@end
এবং বাস্তবায়ন:
#import "RMActivityIndicator.h"
@interface RMActivityIndicator ()
@property(nonatomic,assign) unsigned int activityCounter;
@end
@implementation RMActivityIndicator
- (id)init
{
self = [super init];
if (self) {
self.activityCounter = 0;
}
return self;
}
-(void)increaseActivity{
@synchronized(self) {
self.activityCounter++;
}
[self updateActivity];
}
-(void)decreaseActivity{
@synchronized(self) {
if (self.activityCounter>0) self.activityCounter--;
}
[self updateActivity];
}
-(void)noActivity{
self.activityCounter = 0;
[self updateActivity];
}
-(void)updateActivity{
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = (self.activityCounter>0);
}
#pragma mark -
#pragma mark Singleton instance
+(RMActivityIndicator *)sharedManager {
static dispatch_once_t pred;
static RMActivityIndicator *shared = nil;
dispatch_once(&pred, ^{
shared = [[RMActivityIndicator alloc] init];
});
return shared;
}
@end
উদাহরণ:
[[RMActivityIndicator sharedManager]increaseActivity];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:self.networkReceiveProcessQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
[[RMActivityIndicator sharedManager]decreaseActivity];
}
আপনার নেটওয়ার্ক কল হয়ে গেলে আপনাকে ক্রিয়াকলাপের সূচকটি আড়াল করার যত্ন নেওয়া দরকার।
আপনি যদি ব্যবহার করেন AFNetworking
তবে আপনার খুব বেশি কিছু করার দরকার নেই।
AppDelegate
ক্লাসে নিম্নলিখিত পরিবর্তনগুলি করুন :
আমদানি AFNetworking/AFNetworkActivityIndicatorManager.h
এটি ভিতরে রাখুন didFinishLaunchingWithOptions:
[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]
আইটিএস 13 এ স্থিতি দণ্ডের নেটওয়ার্ক ক্রিয়াকলাপ সূচককে অবহেলা করা হয়েছিল ।
ব্যবহার করে UIApplication.shared.isNetworkActivityIndicatorVisible = true
আর কাজ হবে না।
অবহেলা বার্তাটি বলে:
যদি ইচ্ছা হয় তবে আপনার অ্যাপ্লিকেশনটিতে একটি কাস্টম নেটওয়ার্ক ক্রিয়াকলাপ UI সরবরাহ করুন।
যেমনটি অনেকে বলেছে, আইফোন এক্স এবং সম্ভবত অন্যান্য নতুন আইফোনগুলির জন্য খাঁজযুক্ত কোনও নেটওয়ার্ক ক্রিয়াকলাপের সূচক নেই।
অর্টউইন জেন্টজ, ফিউচারট্যাপের লেখা এই অবিশ্বাস্য লাইব্রেরিটি পেরিয়ে এসেছি: https://github.com / ফিউচারটাইপ / এফটিলাইনারঅ্যাক্টিভিটি ইন্ডিকেটর
প্রাথমিকভাবে আইফোন এক্স প্রকাশিত হওয়ার সময় এটি সূচকটি ঠিক সেখানে রেখেছিল, অনেকে নাইট রাইডার ধরণের সূচকটি মনে রাখবেন।
এই লাইব্রেরিতে সুইফট ৪.২-এর জন্য উপলভ্য, সুতরাং আপনার এখানে বর্ণিত অনুসারে সুইফট ল্যাঙ্গুয়েজ সেটিংস পরিবর্তন করতে হবে: টাইপ করুন 'এনএসএট্রিবিউটড স্ট্রিংকি' (ওরফে 'এনএসএসটিং') এর কোনও সদস্যের 'ফন্ট' নেই