اذهب إلى المحتوى

السؤال

نشر

السلام عليكم .. اريد حعل التطبيق يكون rtl انا قمت بعملها على اندريود بهذه الطريقة 

 




//. android mainfest

      android:supportsRtl="true"

        
        
   //     main activity 
        
         I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();
    sharedI18nUtilInstance.forceRTL(this, true);
    sharedI18nUtilInstance.allowRTL(this, true);


ونفعت على اندريود .. الان اريد ان اجعل ال ios هو الاخر بهذه الطريقة يكون من اليمين الى اليسار .. 

Recommended Posts

  • 0
نشر

وعليكم السلام @أحمد ابراهيم عبد الله

يعتمد ذلك على اللغة التي تستخدمها في بناء تطبيقك هل هي Swift أم Objective-c ,لكن سأفترض إنك تستخدم Swift , يمكننا جعل الView يٌعرض من اليمين لليسار أو العكس من خلال إستخدام الخاصية semanticContentAttribute يمكنك الإطلاع على مزيد من طرق الإستخدام من خلال موقع أبل الرسمي من هنا semanticContentAttribute , الأن لجعل ال view من اليمين لليسار أو العكس سنقوم بعمل فنكشن تأخذ قيمة true أو false للجعل الview من اليمين لليسار أو العكس من خلال إستخدام الخاصية semanticContentAttribute ,

 private func setKeyWindowFromAppDelegate(makeRTL: Bool) {
        UIView.appearance().semanticContentAttribute = makeRTL ? .forceRightToLeft : .forceLeftToRight
        let appDelegate = UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate
        let homeController = UIViewController()
        appDelegate?.window?.rootViewController = homeController
    }

ما ستقوم به الفنكشن أعلاه , هو تحويل الفيو من اليمين لليسار في حالة مررنا true أو العكس في حالة مررنا false لها ,بعدها يمكننا إستدعائها هكذا مع تمرير القيمة true , false لها

setKeyWindowFromAppDelegate(makeRTL: true)

طبعاً هذا بشكل مبسط لتغيير إتجاه ال View فقط , يوجد عدة أمور يجب القيام بها في حالة تريد التطبيق يدعم اللغة العربية مثل ترجمة النصوص وإستدعاءها 

  • 0
نشر
بتاريخ 17 ساعات قال Mohamd Imran:

وعليكم السلام @أحمد ابراهيم عبد الله

يعتمد ذلك على اللغة التي تستخدمها في بناء تطبيقك هل هي Swift أم Objective-c ,لكن سأفترض إنك تستخدم Swift , يمكننا جعل الView يٌعرض من اليمين لليسار أو العكس من خلال إستخدام الخاصية semanticContentAttribute يمكنك الإطلاع على مزيد من طرق الإستخدام من خلال موقع أبل الرسمي من هنا semanticContentAttribute , الأن لجعل ال view من اليمين لليسار أو العكس سنقوم بعمل فنكشن تأخذ قيمة true أو false للجعل الview من اليمين لليسار أو العكس من خلال إستخدام الخاصية semanticContentAttribute ,


 private func setKeyWindowFromAppDelegate(makeRTL: Bool) {
        UIView.appearance().semanticContentAttribute = makeRTL ? .forceRightToLeft : .forceLeftToRight
        let appDelegate = UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate
        let homeController = UIViewController()
        appDelegate?.window?.rootViewController = homeController
    }

ما ستقوم به الفنكشن أعلاه , هو تحويل الفيو من اليمين لليسار في حالة مررنا true أو العكس في حالة مررنا false لها ,بعدها يمكننا إستدعائها هكذا مع تمرير القيمة true , false لها


setKeyWindowFromAppDelegate(makeRTL: true)

طبعاً هذا بشكل مبسط لتغيير إتجاه ال View فقط , يوجد عدة أمور يجب القيام بها في حالة تريد التطبيق يدعم اللغة العربية مثل ترجمة النصوص وإستدعاءها 

انا لا عارف ان كان هذا كود سويفت ام اوبجكتيف سى .. لاننى مطور ريأكت ناتيف وليس ios وهذه اول مرة اتعامل مع ios 

هذا هو الكود مع وضع ما قلت عليه لكن للأسف التطبيق لا يعمل 

 

#import "AppDelegate.h"

#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <TwitterKit/TWTRKit.h>
#import "RNBootSplash.h"

#ifdef FB_SONARKIT_ENABLED
#import <FlipperKit/FlipperClient.h>
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
#import <Firebase.h>

static void InitializeFlipper(UIApplication *application) {
  FlipperClient *client = [FlipperClient sharedClient];
  SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
  [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
  [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
  [client addPlugin:[FlipperKitReactPlugin new]];
  [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
  [client start];
}
#endif

@implementation AppDelegate

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
  return [[Twitter sharedInstance] application:app openURL:url options:options];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [FIRApp configure];

#ifdef FB_SONARKIT_ENABLED
  InitializeFlipper(application);
#endif
  

  private func setKeyWindowFromAppDelegate(makeRTL: Bool) {
         UIView.appearance().semanticContentAttribute = makeRTL ? .forceRightToLeft : .forceLeftToRight
         let appDelegate = UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate
         let homeController = UIViewController()
         appDelegate?.window?.rootViewController = homeController
     }
  
  
  setKeyWindowFromAppDelegate(makeRTL: true)

  

  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"MyApp"
                                            initialProperties:nil];

  if (@available(iOS 13.0, *)) {
      rootView.backgroundColor = [UIColor systemBackgroundColor];
  } else {
      rootView.backgroundColor = [UIColor whiteColor];
  }

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  
  [RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView];
  

  return YES;
}

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}

@end




هذا هو الكود رجاء اخبرنى ان كان سويفت ام اوبجكتيف سى 


@Mohamd Imran

  • 0
نشر
بتاريخ 13 ساعات قال أحمد ابراهيم عبد الله:

هذا هو الكود رجاء اخبرنى ان كان سويفت ام اوبجكتيف سى 

آه معلش أعتذر لم إنتبه إلى إنك تستخدم react native قم بإزالة الفنكشن والكود الذي ذكرته لك في تعليقي الأول وإتبع التالي لرياكت , بالنسبة للكود المرفق الخاص بك هو Objective-c ,الأن في رياكت للIOS لجعل الفيو من اليمين لليسار  , قم بإضافة سطر الإستيراد التالي في أعلى الكود قبل 

#import "AppDelegate.h"

 أي هكذا 

#import <React/RCTI18nUtil.h>
#import "AppDelegate.h"

ثم بعد ذلك قم بحذف الكاش من خلال  الذهاب إلى المشروع في ال Xcode ثم ضغط Command + Shift + K وبعد ذلك , قم بإضافة الأسطر التالية في الميثود didFinishLaunchingWithOptions

 [[RCTI18nUtil sharedInstance] allowRTL:YES];
 [[RCTI18nUtil sharedInstance] forceRTL:YES];

لإجبار الفيو أن يٌعرض من اليمين لليسار 

didFinishLaunchingWithOptions

قبل أن يتم إرجاع Yes أي هكذا في الكود الخاص بك أي هنا

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [FIRApp configure];

قبل 

return YES;

بعد ذلك المفترض أن يعمل معك الفيو من اليمين لليسار .

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...