React-native: [рдЖрд░рдВрднреАрдХрд░рдг] рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░реАрди рд╕рдлреЗрдж рдлреНрд▓реИрд╢

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдордИ 2015  ┬╖  138рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react-native

рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХрд╛рд░рдг рдореИрдВ рдпрд╣ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдХреЛрдИ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд┐рдХ рдХрд░рдиреЗ рдФрд░ рдРрдк рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рдлреЗрдж рдлреНрд▓реИрд╢ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдЗрд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ?

AsyncStorage Locked

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП...

рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╡рд╣ рдерд╛ rootView рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд▓реЗрдХрд┐рди [UIColor colorWithPatternImage:img] ред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рджреЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рджреГрд╢реНрдпрдорд╛рди рд░рд╣рддрд╛ рд╣реИред

рдПрдХ рдкреВрд░реНрдг рд╕реНрдирд┐рдкреЗрдЯ (рдФрд░ @ рдбрд┐рд╡рд╛рдЗрди-рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЯрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рд▓реЙрдиреНрдЪ рдЗрдореЗрдЬ рдвреВрдВрдвреЗрдЧрд╛, рдиреАрдЪреЗ рд╣реИ:

NSArray *allPngImageNames = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil];
  for (NSString *imgName in allPngImageNames){
    if ([imgName containsString:@"LaunchImage"]){
      UIImage *img = [UIImage imageNamed:imgName];

      if (img.scale == [UIScreen mainScreen].scale && CGSizeEqualToSize(img.size, [UIScreen mainScreen].bounds.size)) {
        rootView.backgroundColor = [UIColor colorWithPatternImage:img];
      }
  }
}

рд▓реЙрдиреНрдЪ рдЗрдореЗрдЬ рдЕрдм рддрдм рддрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рддрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдмрдВрдбрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред

рд╕рднреА 138 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@alinz - рдпрд╣ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/tadeuzagallo/react-native/commit/8d992262ed2dcf0d46e8d22e605764902c33012f

@alinz рдХреНрдпрд╛ рдпрд╣ https://www.dropbox.com/s/xq522ywqsd16vqe/example.mov?dl=0 рдЬреИрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрддрд╛ рд╣реИ

@liubko рд╣рд╛рдВ, рдпрд╣ рд╡рд╣реА рд╣реИ

@brentvatne : рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд╡рд╣ рдкреИрдЪ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдЧрд╛ (рдпрджрд┐ рдореИрдВ рдЕрдВрдзрд╛/рдмреЗрд╡рдХреВрдл рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ :-)ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдРрдк рд▓реЙрдиреНрдЪ рд╣реБрдЖ рд╣реИ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреЗ рдмреАрдЪ рдПрдХ рдХреНрд╖рдг рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди рддрдм рддрдХ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА рдЬрдм рддрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ "рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЗрд╢реА" рдРрдк рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@oblador - рдЖрд╣, рдпрд╣ рдЖрдкрдХреЛ "рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ" рдкрд▓ рдореЗрдВ рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рдорд╛рди рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ рд░рдЦрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдХреНрд░рдордг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

@vjeux - рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ FB рдРрдкреНрд╕ рдореЗрдВ рдХреИрд╕реЗ @nicklockwood

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ (рдЕрд▓рдЧ) рдлрд┐рдХреНрд╕ рд╣реИред loadingView рдХреА рдирдИ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ RCTRootView , рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреА рд▓реЙрдиреНрдЪ рдЫрд╡рд┐ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдПрдХ рдкреВрд░реНрдг-рд╕реНрдХреНрд░реАрди UIImageView рдХрд░реЗрдВред рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

UIImageView *launchView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MyLaunchImage"];
rootView.loadingView = launchView;

рдореИрдВ рд▓реЙрдиреНрдЪ рдЫрд╡рд┐ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ:

// TODO: support landscape orientation

// Get launch image
NSString *launchImageName = nil;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
  CGFloat height = MAX(RCTScreenSize().width, RCTScreenSize().height);
  if (height == 480) launchImageName = @"[email protected]"; // iPhone 4/4s
  else if (height == 568) launchImageName = @"[email protected]"; // iPhone 5/5s
  else if (height == 667) launchImageName = @"[email protected]"; // iPhone 6
  else if (height == 736) launchImageName = @"[email protected]"; // iPhone 6+
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  CGFloat scale = RCTScreenScale();
  if (scale == 1) launchImageName = @"LaunchImage-700-Portrait~ipad.png"; // iPad
  else if (scale == 2) launchImageName = @"LaunchImage-700-Portrait@2x~ipad.png"; // Retina iPad
}

// Create loading view
UIImage *image = [UIImage imageNamed:launchImageName];
if (image) {
  UIImageView *imageView = [[UIImageView alloc] initWithFrame:(CGRect){CGPointZero, RCTScreenSize()}];
  imageView.contentMode = UIViewContentModeBottom;
  imageView.image = image;
  rootView.loadingView = imageView;
}

рдпрджрд┐ рдЖрдк iOS 8+ рдкрд░ рд╣реИрдВ, рддреЛ @nicklockwood рдиреЗ рдЬреЛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ,

@ide рдореИрдВ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди xib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдЕрдкрдирд╛ рд▓реЙрдЪрд╕реНрдХреНрд░реАрди рджреГрд╢реНрдп рджреЗрдЦрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдРрдк рдХреЗ рдмреВрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдПрдХ рд╕рдлреЗрдж рджреГрд╢реНрдп (рдлрд╝реНрд▓реИрд╢) рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

@alinz , рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ @ide рдХрд╛ рдЕрд░реНрде рд╣реИ RCTRootView loadingView (рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЕрднреА рднреА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА) рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди xib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЕрднреА рддрдХ) рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред

рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рд░рд┐рдПрдХреНрдЯ _begins_ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ iOS рдЖрдкрдХреА рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░реАрди рдХреЛ рдЫреБрдкрд╛ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЦрд╛рд▓реА рд╕реНрдХреНрд░реАрди рджреЗрдЦрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рд╕рдордп рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрдм рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░реАрди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрд╕реА рджреГрд╢реНрдп рдХреЛ рджрд┐рдЦрд╛рдХрд░ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдП рдЬреЛ RCTRootView рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @nicklockwood ред рд╡рд╣ рдореЗрд░рд╛ рдмреБрд░рд╛ рдерд╛ред :)

http://stackoverflow.com/a/29115477/255765 рдХреЗ рд╕реМрдЬрдиреНрдп рд╕реЗ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ:

for (NSString *imgName in allPngImageNames){
    // Find launch images
    if ([imgName containsString:@"LaunchImage"]){
      UIImage *img = [UIImage imageNamed:imgName]; //-- this is a launch image
      // Has image same scale and dimensions as our current device's screen?
      if (img.scale == [UIScreen mainScreen].scale && CGSizeEqualToSize(img.size, [UIScreen mainScreen].bounds.size)) {
        NSLog(@"Found launch image for current device %@", img.description);
        UIImageView *launchView = [[UIImageView alloc] initWithImage: img];
        rootView.loadingView = launchView;
      }
    }
  }

рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред

рдорд╛рдирдХ/рджрд╕реНрддрд╛рд╡реЗрдЬ рддрд░реАрдХреЗ рд╕реЗ +1ред

@ рдбрд┐рд╡рд╛рдЗрди-рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреНрдпрд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

@ myusuf3

@nicklockwood рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рд╡рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ рд╢рд╛рдпрдж рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдХреЛрдб рдЕрдиреБрднрд╡ рдХреА рд╢реБрджреНрдз рдХрдореА рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕реНрдирд┐рдк рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдЬрдм рдореИрдВ рдЕрдВрдд рдореЗрдВ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣рд╛рдВ рдереЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ "рдореЗрд░рд╛" рд╕рдорд╛рдзрд╛рди рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рд╢реБрджреНрдз рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░ред

@nicklockwood рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдПрдХ рд╕рдлреЗрдж рдлреНрд▓реИрд╢ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдиреНрдЪ рдЗрдореЗрдЬ рдмрдирд╛рдИред рд▓реЙрдиреНрдЪ рдЫрд╡рд┐ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди.xib рдЬреИрд╕реА рд╣реА рд╣реИред

рд╣рдорд╛рд░реЗ рдРрдк рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рд░реЛрдХреЗ рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬрд╝ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рд▓реЙрдиреНрдЪ рдЫрд╡рд┐ рдХреЗ рдЫрд┐рдкреЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдлреНрд▓реИрд╢ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рд▓реЙрдиреНрдЪ рдЫрд╡рд┐ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реИ? (рдпрд╣ рдХреЗрд╡рд▓ рджреЗрдЦрдХрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рд▓реЙрдиреНрдЪ рдЫрд╡рд┐ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ рд▓рд╛рд▓ рдЖрдпрдд рдХреА рддрд░рд╣ рдХреБрдЫ рдореЗрдВ рдмрджрд▓реЗрдВ)ред

@nicklockwood рдореИрдВрдиреЗ xib рдлрд╝рд╛рдЗрд▓ рдФрд░ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди рдЫрд╡рд┐ рдХреЗ рдмреАрдЪ рд░рдВрдЧ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореИрдВ рдЕрднреА рднреА рд╡рд╣ рдлреНрд▓реИрд╢ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ред

рдореЗрд░рд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 UIImageView *launchView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"launchScreen1"]];
 rootView.loadingView = launchView;

 rootView.loadingViewFadeDelay = 0.0;
 rootView.loadingViewFadeDuration = 0.15;

рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рджреЛ рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ loadingViewFadeDelay рдФрд░ рдЕрд╡рдзрд┐ рдЕрдм рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рдореБрдЭреЗ рдХреЛрдИ рдлреНрд▓реИрд╢ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рдЪрд┐рдХрдирд╛ рд╕рдВрдХреНрд░рдордгред

@ chirag04 рдореИрдВрдиреЗ рдЗрд╕реЗ рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдЖрдЬрдорд╛рдпрд╛ рдФрд░ рдореБрдЭреЗ рдлреНрд▓реИрд╢ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ :(

рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"whiteFlash"
                                                   launchOptions:launchOptions];

  //here's what I did
  UIImage *image = [UIImage imageNamed:@"LaunchImage"];
  if (image) {
    UIImageView *launchView = [[UIImageView alloc] initWithImage: image];
    launchView.contentMode = UIViewContentModeBottom;
    launchView.image = image;
    rootView.loadingView = launchView;
  }
  ///////////////////////////

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [[UIViewController alloc] init];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  return YES;

рдареАрдХред рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреЛрджрдиреЗ рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлреНрд▓реИрд╢ рд╢рд╛рдпрдж рдореЗрд░реЗ рдРрдк рдХреЛ рддрдм рддрдХ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрдм рддрдХ рдХрд┐ asyncstore рд╕реЗ рдХреЛрдИ рдорд╛рди рд▓реЛрдб рди рд╣реЛ рдЬрд╛рдПред

render() {
  if(!this.state.loaded) return (null);
  return <View ...../>;
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдиреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬреЗрдПрд╕ рдиреЗ рдЙрд╕ return null рд╕рд╛рде рдкреНрд░рддрд┐рдкрд╛рджрди рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ

@nicklockwood @alinz рдореИрдВ рд╕рд┐рд░реНрдл рд╣рд╡рд╛ рдореЗрдВ рд╢реВрдЯрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреБрдо рд▓реЛрдЧ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдмрд╛рдд рдореИрдВрдиреЗ рджреЗрдЦреА рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЙрди рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВрдлреЗрдбрдбреЗ рдЖрджрд┐ рдорд╛рдиреЛрдВ рдХреЛ 0.30 рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдВрдХреНрд░рдордг рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдЪреВрдХ 0.25 рд╣реИрдВ рдЬреЛ рдЪрд┐рдХрдиреА рднреА рд╣реИред

LoadingFadeDelay рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдареАрдХ рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХрд╛ рдРрдк рддреБрд░рдВрдд рдХреБрдЫ рднреА рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрднреА рднреА рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ loadingViewFadeDelay рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд▓реЛрдб рд╣реЛрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕рдмрд╕реЗ рдзреАрдореА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред

рдореБрдЭреЗ @nicklockwood рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд▓рдВрдмрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ, рдШрдЯрдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛ рд╕рдХреЗред

рдардВрдбрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдЖрдк рд▓реЛрдЧ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ 3 рдШрдЯрдХ рд╕рднреА рд╕рдорд╛рди рд╣реИрдВред

1) launchScreen.xib
2) loadingView
3) return null in render to actually render a view which is like loadingView and launchScreen.xib?

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдмрд┐рдВрджреБ 3 рдХрд╛ рдкреИрдорд╛рдирд╛ рдХреИрд╕реЗ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рднреА рдЗрд╕рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдВрдЧреЗ?

рдпрджрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЯреАрдИрдПрд╕, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ "рдЦрд╛рд▓реА" рджреГрд╢реНрдп рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдпрд╣ рдлреАрдХрд╛ рджреЗрд░реА рд╕реЗ рддреЗрдЬрд╝реА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛред

asyncstorage рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдирд╣реАрдВ

рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд╛рдЗрдо рдмреЗрд╕ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ред рдРрд╕рд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк 100% рдЧрд╛рд░рдВрдЯреА рджреЗ рд╕рдХреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдордп рд╕рдЯреАрдХ рд╣реИред рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХреБрдЫ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрдЭрд╛рд╡ рд╣реИред

рдорд╛рдирд╛ред рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп, рдорд╛рдирдХ рдЖрдИрдУрдПрд╕ рд▓реЛрдбрд┐рдВрдЧ рдЫрд╡рд┐ рдХреА рддрд░рд╣, рдХреЗрд╡рд▓ рддрдм рддрдХ рдХрд╡рд░ рдХрд░рдирд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХрд╛ рдРрдк рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рди рд╣реЛ, рднрд▓реЗ рд╣реА рд╕рднреА рдРрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдВ, рдПрдХ рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдкрд┐рдирд░ рд╣реИред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЫрд╡рд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЧреИрд░-рд╕реНрдерд┐рд░ рдмрдирд╛ рд╕рдХреЗрдВред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдореЗрдВ UIActivityIndicatorView рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рдореЛрдЪрди рдЫрд╡рд┐ рдХреЛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВрдиреЗ рдлреНрд░реЗрдо рдореВрд▓ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд┐рд╕ рдореВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯреА рд╢реАрд░реНрд╖ рдмрд╛рд░ рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╢реАрд░реНрд╖ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдлреИрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

  UIImageView *launchView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];
  CGRect frame = launchView.frame;
  frame.origin.x = 0;
  frame.origin.y = 0;
  launchView.frame = frame;
  rootView.loadingView = launchView;
  rootView.loadingViewFadeDelay = 0.0;
  rootView.loadingViewFadeDuration = 0.0;

рдпрд╣ рдПрдХ рд▓реЙрдиреНрдЪ рдЫрд╡рд┐ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд▓реЙрдиреНрдЪ _view_ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдкрдиреА рдЫрд╡рд┐ рджреГрд╢реНрдп рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рджреГрд╢реНрдп рдХреЗ рдЕрдВрджрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рд▓реЙрдиреНрдЪ рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

UIView *launchView = [[UIView alloc] init];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];
imageView.frame = CGRectMake(whatever);
[launchView addSubview:imageView];
...

рд╕рдЪ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд░реИрдкрд░ рдХреЛ рд╕реНрдХреНрд░реАрди рд╕реНрдкреЗрд╕ рднрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЫрд╡рд┐ рдХреЛ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реВрдЯ рд╡реНрдпреВ рджреНрд╡рд╛рд░рд╛ рд░реИрдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ https://github.com/facebook/react-native/blob/757d6d204ae2d743634af64e3f78a4aad9d53f70/React/Base/RCTRootView.m#L191ред

@Intellicode рд╣рд╛рдБред

@ dрд╡рд╛рдЗрди-рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ iPhone 4s рдкрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдореЗрд░реЗ рдРрдк рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдлрд┐рдХреНрд╕ рд╕рд┐рд░реНрдл рдЕрдЧрд░ рдореЗрдВ рдмреНрд░реЗрдХ рд▓рдЧрд╛рдирд╛ рд╣реИред

рдПрдХ рдФрд░ рджреБрд░реНрдШрдЯрдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдИрдУрдПрд╕ 7 рдкрд░ containsString рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

@nicklockwood рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рдПрдЧрд╛?

рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХреА рдЧрдИ рдЪреАрдЬрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЙрдиреНрдЪ рдЗрдиреЗрдЬ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдКрдкрд░ рдЬреЛ рд╕реНрдирд┐рдкреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХрд╛ рд╕реНрдирд┐рдкреЗрдЯ рд╕рд╣реА рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЪреБрди рд░рд╣рд╛ рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд┐рдХреНрд╕?

рдХреНрдпрд╛ рдЖрдк рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдпрд╛ рдбрд┐рд╡рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗ? рдЖрдк рдХрд┐рд╕ iPhone рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдкреЛрд░реНрдЯреНрд░реЗрдЯ рдпрд╛ рд▓реИрдВрдбрд╕реНрдХреЗрдк?

рдбрд┐рд╡рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рд╣реА рдЖрдпрд╛рдо рдЙрдард╛рддрд╛ рд╣реИред рдЙрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдпрд╣ рдЫрд╡рд┐ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рд▓рд╛ рд╕реНрдерд╛рди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд▓рд╛ рд╕реНрдерд╛рди coz рд╣реИ, рдпрд╣ рдЫрд╡рд┐ рдХреЛ рдЧрд▓рдд рдЖрдпрд╛рдо рдХреЗ рд╕рд╛рде рдЙрдард╛рддрд╛ рд╣реИред

рдореИрдВ рдЖрдИрдлреЛрди 6 рдкрд░ рд╣реВрдВред рдкреЛрд░реНрдЯреНрд░реЗрдЯред

рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

UIImageView *launchView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];
  rootView.loadingView = launchView;
  rootView.loadingViewFadeDelay = 0.20;
  rootView.loadingViewFadeDuration = 0.20;

lrn_launch_screen

рд╡рд╣ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛, рдпрд╣ рдерд╛:

// Get launch image
NSString *launchImageName = nil;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
  CGFloat height = MAX(RCTScreenSize().width, RCTScreenSize().height);
  if (height == 480) launchImageName = @"[email protected]"; // iPhone 4/4s
  else if (height == 568) launchImageName = @"[email protected]"; // iPhone 5/5s
  else if (height == 667) launchImageName = @"[email protected]"; // iPhone 6
  else if (height == 736) launchImageName = @"[email protected]"; // iPhone 6+
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  CGFloat scale = RCTScreenScale();
  if (scale == 1) launchImageName = @"LaunchImage-700-Portrait~ipad.png"; // iPad
  else if (scale == 2) launchImageName = @"LaunchImage-700-Portrait@2x~ipad.png"; // Retina iPad
}

// Create loading view
UIImage *image = [UIImage imageNamed:launchImageName];
if (image) {
  UIImageView *imageView = [[UIImageView alloc] initWithFrame:(CGRect){CGPointZero, RCTScreenSize()}];
  imageView.contentMode = UIViewContentModeBottom;
  imageView.image = image;
  rootView.loadingView = imageView;
}

рдУрд╣ рд▓рд╛рдирдд! рдХрд╛рд╢ рдореИрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рддрд╛ред рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рднреА рдЖрд╕рд╛рди рд╣реИред

I've been experimenting with a way to automatically detect the launch image and make this completely automatic, but it's not really ready yet. If you're interested, it looks like this:

рд╢рд╛рдпрдж рдпрд╣ experimenting рдЪреАрдЬ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдЪреВрдХ рдЧрдпрд╛ред рдорд╛рдл рдХрд░рдирд╛ рдореЗрд░рд╛ рдмреБрд░рд╛ред

рдпрд╣рд╛рдБ рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ def рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЛ рднреА рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рд╣реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдВрдбрд░рд╕реЛрд▓реНрдб рдХрд░ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд╢рд╛рдпрдж рдЕрднреА рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ "рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо рдЕрднреА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" :-)

"рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо рдЕрднреА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ" рд╣рдореЗрдВ рдРрдк рд╕реНрдЯреЛрд░ рдкрд░ рдХрд┐рд╕реА 1 рд╕реНрдЯрд╛рд░ рд╕реЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд╣рд╛ред рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рджреБрдирд┐рдпрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрддрд╛ рд╣реИред :)

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдмрдВрдж рдХрд░реЗрдВ?

рдореИрдВ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред

рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди xib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ 100% рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬреЛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

UIView* launchScreenView = [[[NSBundle mainBundle] loadNibNamed:@"LaunchScreen" owner:self options:nil] objectAtIndex:0];
launchScreenView.frame = self.window.bounds;
rootView.loadingView = launchScreenView;

рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ application didFinishLaunchingWithOptions рд╡рд┐рдзрд┐ рдореЗрдВ AppDelegate.m рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ return YES рдХрд╣рдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛ рдХреЗ рдареАрдХ рдКрдкрд░ рд╣реИред

@arnemart рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ ios 8+ рдХреЗ рд▓рд┐рдП рд╣реА рдХрд╛рдо рдХрд░реЗрдЧреА?

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ LaunchImage , рдЖрдкрдХреЛ рдЫрд╡рд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП frame рдФрд░ contentMode рджреЛрдиреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

UIImageView *launchScreenView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];
launchScreenView.frame = self.window.bounds;
launchScreenView.contentMode = UIViewContentModeScaleAspectFill;
rootView.loadingView = launchScreenView;

@arnemart рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреА рддрд░рд╣, рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ application didFinishLaunchingWithOptions рд╡рд┐рдзрд┐ рдореЗрдВ AppDelegate.m рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ return YES рдХрд╣рдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛ рдХреЗ рдКрдкрд░ рд╣реИред

рдЕрдЬреАрдмред RN v.0.11.4 рдкрд░, рдРрдк рдкрд╣рд▓реЗ рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдРрдк рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ LaunchScreen.xibред iOS 9 w/ @arnemart рдХрд╛ рдлрд┐рдХреНрд╕ https://github.com/facebook/react-native/issues/1402#issuecomment -130236507ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

@irfaan window.backgroundColor рдХреЛ [UIColor redColor] рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдЬреЛ рд╣рдореЗрдВ рдмрддрд╛рдП рдХрд┐ рдХрд╛рд▓рд╛ рд░рдВрдЧ рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХреБрдЫ рдФрд░ред

self.window.backgroundColor = [UIColor redColor]; рдЕрдВрджрд░ didFinishLaunchingWithOptions рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ред LaunchScreen.xib рд╕реЗ рдкрд╣рд▓реЗ рдЕрднреА рднреА рдХрд╛рд▓рд╛ рд╣реИред рддреЛ рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдирд╣реАрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ @nicklockwood

рдЖрдк рдХреИрд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдКрдВ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдУрдПрд╕ рдЖрдкрдХреЗ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди рдХреЛ рддрдм рддрдХ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдм рддрдХ рдРрдк рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░, рд░рд┐рдПрдХреНрдЯ рдЗрд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ)ред

рд╢рд╛рдпрдж рдпрд╣ рдПрдХреНрд╕рдХреЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреНрд░реБрдЯрд┐ рд╣реИ? рдпрд╛ рд╕рдВрднрд╡рддрдГ рдЖрдИрдУрдПрд╕ 9 рдореЗрдВ рдПрдХ рдмрдЧ?

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрд┐рд╕реА рдбрд┐рд╡рд╛рдЗрд╕, рдпрд╛ рдХреЗрд╡рд▓ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж @nicklockwood - рдореИрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЗрд╕реЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдВ рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ + рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЬреАрдмред рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЙрдарддреА рд╣реИ рддреЛ рджреЛрдмрд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗред

рд╣рд╛рдп @genexliu , рдореИрдВрдиреЗ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЕрдкрдирд╛ "рд▓реЙрдиреНрдЪрдЗрдореЗрдЬ" рд╕реЗрдЯ Images.xcassets/LaunchImage.launchimage/ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдлрд┐рд░ рднреА рди рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд┐рдкрдХрд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдФрд░ рди рд╣реА рдореЗрд░рд╛ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди.рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдЙрдиреНрд╣реЗрдВ рдвреВрдВрдв/рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рджреЛрдиреЛрдВ рдЪреБрдкрдЪрд╛рдк рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ)ред рдореЗрд░рд╛ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрджрд░реНрднрд┐рдд рдЫрд╡рд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рд╕рд╛рде рд╣реА рдПрдХреНрд╕рдХреЛрдб рд╕реЗ рдЪрд▓рдиреЗ рдкрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдЕрдиреБрдХреНрд░рдо рд╕рд╛рдорд╛рдиреНрдп рджрд┐рдЦрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди cmd рд▓рд╛рдЗрди рд╕реЗ natal launch рдЪрд▓рд╛рддреЗ рд╕рдордп рдкреНрд░рд╛рд░рдВрдн рдЕрдиреБрдХреНрд░рдо/рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдлреЗрдж рдлреНрд▓реИрд╢/рдЖрджрд┐ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд▓реЙрдиреНрдЪ рдЗрдореЗрдЬ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдПрдХреНрд╕рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЧ рдерд╛ред рдореИрдВрдиреЗ рд▓реЙрдиреНрдЪ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ 'рдПрд╕реЗрдЯ рдХреИрдЯрд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ' рдФрд░ рдлрд┐рд░ 'рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ' рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ @genexliu рдХрд╛ рдХреЛрдб рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ loadingViewFadeDelay рдХреЛрдИ рдЕрд╕рд░ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ:

  UIImageView *launchScreenView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Images/LaunchImage"]];
  launchScreenView.frame = self.window.bounds;
  launchScreenView.contentMode = UIViewContentModeScaleAspectFill;
  rootView.loadingView = launchScreenView;
  rootView.loadingViewFadeDelay = 5000;

рдЕрднреА рддрдХ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рд▓реЙрдиреНрдЪ рдЗрдореЗрдЬ рдбрд┐рд╕реНрдкреНрд▓реЗ рдФрд░ рдореЗрд░реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ render рдмреАрдЪ рдХреЛрдИ рджреЗрд░реА рдирд╣реАрдВ рд╣реИред

@"рдЗрдореЗрдЬ/рд▓реЙрдиреНрдЪрдЗрдореЗрдЬ" рдореБрдЭреЗ рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рд╕рд┐рд░реНрдл @ "рд▓реЙрдиреНрдЪ рдЗрдореЗрдЬ" рд╣реИ

рдУрд╣, рдЙрдлрд╝, рд╣рд╛рдБред рддреБрдо рд╕рд╣реА рдХрд╣ рд░рд╣реА рд╣реЛред рд╡рд╣ рдПрдХ рдЧрд▓рдд рдкреЗрд╕реНрдЯ рдерд╛ - рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА (рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдирд╣реАрдВ) рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред

рд╕рд╛рде рд╣реА, 3 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдХреА рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рджреЗрдЦреЗрдВ - рд╡рд┐рднрд┐рдиреНрди рдбрд┐рд╡рд╛рдЗрд╕ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рд▓реЙрдиреНрдЪ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВред

рджреЛрд╣! рдЖрдк рдареАрдХ рдХрд╣ рд░рд╣реЗ рдереЗред LaunchImage рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ?

Android рдХреЗ рд▓рд┐рдП +1

cc @dmmiller рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Android рдкрд░ рдПрдХ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдлреАрдЪрд░ рд╣реИ?

рдирдорд╕реНрддреЗ, рдореИрдВ рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдб рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдПред рдореЗрд░реА рд╕рдордЭ рд╕реЗ, рд╕рдорд╛рдзрд╛рди рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛ рд╣реИ, рди рдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рднреАрддрд░ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдХрд╣рд╛рдБ рдЬрд╛рддрд╛ рд╣реИ? xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ main.m рдлрд╛рдЗрд▓ рдореЗрдВ? рдзрдиреНрдпрд╡рд╛рджред

@CorpusCallosum рдХреЛрдб рдХреЛ AppDelegate.m рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ RCTRootView рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @nicklockwood , рдореИрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рджреВрдВрдЧрд╛ред

рдЕрд░реЗ рдпрд╣ рдХреЛрдб рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рд╕рдлреЗрдж рдлреНрд▓реИрд╢ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореЗрд░реА рдЫрд╡рд┐ рдЙрд╕ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдХреНрд░реАрди рдкрд░ рд▓реЛрдб рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдм рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдРрдк рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛! рдпрд╣ рд╕рд┐рд░реНрдл рдЙрд╕ рд▓реЛрдб рд╕реНрдХреНрд░реАрди рдкрд░ рд░рд╣рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдРрдк рд▓реЛрдб рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдмрд╛рддрдЪреАрдд рднреА рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ (рдЯреИрдк рдФрд░ рд╕реНрд╡рд╛рдЗрдк рдХрд░реЗрдВ), рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдирд╛ рдРрдк рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛, рдпрд╣ рдмрд╕ рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИ рдЙрд╕ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдХреНрд░реАрди рдкрд░ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ?

рдореЗрд░реА AppDelegate.m рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореЗрд░рд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [[UIViewController alloc] init];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];

  //use launch image as BG image for app
  UIImageView *launchScreenView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage-blank-grey"]];
  launchScreenView.frame = self.window.bounds;
  launchScreenView.contentMode = UIViewContentModeScaleAspectFill;
  rootView.loadingView = launchScreenView;
  rootView.loadingViewFadeDelay = 1000;

  return YES;

@CorpusCallosum рдЖрдк рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
rootView.loadingViewFadeDelay = 1000;
рдпрд╛ рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рдФрд░ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдмреАрдЪ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╕рдВрдХреНрд░рдордг рдХреЛ рдареАрдХ рдХрд░реЗрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдХрд╛рдЗрдпрд╛рдВ рд╕реЗрдХрдВрдб рд╣реИрдВ, рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдирд╣реАрдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд▓реИрд╢ рдкрд░ "рдлрдВрд╕ рдЧрдпрд╛" рд▓рдЧрддрд╛ рд╣реИ)ред
рдпрджрд┐ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ 0-5 рдХреЗ рдмреАрдЪ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ (рдЖрдк рдЧреИрд░ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛, рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВ :)

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдкрдиреЗ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди xib рдХреЛ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ AppDelegate.m рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:

UIView *loading = [[[NSBundle mainBundle] loadNibNamed:@"LaunchScreen" owner:self options:nil] objectAtIndex:0];
rootView.loadingView = loading;
rootView.loadingViewFadeDelay = 1;

рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдЙрд╕ рд╕рдордп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рдРрдк рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░рд╣реЗрдЧрд╛ред

@ рдбреЗрд╡рд┐рдб- рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ

@ david-a, @geriux : рдореБрдЭреЗ launchScreenView.frame = CGRectZero; рднреА рд╕реЗрдЯ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА LaunchScreen.xib рдореЗрдВ AspectFill рд╕рд╛рдордЧреНрд░реА рдореЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдереА рдФрд░ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИред

@ рдмрд╛рд╕рд┐рдд рдЕрд▓реА рд╣рд╛рдБ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЗрд╕реЗ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рджреГрд╢реНрдп рдХрд╛ рдЖрдХрд╛рд░ рд╢реВрдиреНрдпреЗрддрд░ рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕реНрдХреНрд░реАрди рдореЗрдВ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@ рдбреЗрд╡рд┐рдб- рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдореБрдЦреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдорд╛рд░реНрдЪ 2015 рдореЗрдВ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрднреА рднреА рдлрд░рд╡рд░реА 2016 рдореЗрдВ рдЖрд░рдПрди 0.20 рдореЗрдВ рдореМрдЬреВрдж рд╣реИред

рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХрд░ рд╕рдХреЗред

рдЖрдкрдХреЗ рд▓реЛрдЧреЛрдВ рдХреА рд╕рд▓рд╛рд╣ рдореБрдЭреЗ рдмрд╣реБрдд рдорджрдж рдХрд░рддреА рд╣реИ (рдЖрдИрдУрдПрд╕ рдкрд░, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ), рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ?

рдпрд╣ рдХреЛрдИ рдорджрдж?

https://github.com/remobile/react-native-splashscreen

@weiyisheng , рдореИрдВ рдЖрдИрдУрдПрд╕ рдкрд░ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╕реНрдкреНрд▓реИрд╢рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@braco @BasitAli рд╣рд╛рдБ, рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реА, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдереИрдВрдХ рдпреВ рджреЛрд╕реНрддреЛрдВред

@BasitAli рдЖрдИрдУрдПрд╕ рдкрд░ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?

рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рд╕реЗ рд▓реЙрдЧрд┐рди рд╕реНрдХреНрд░реАрди рддрдХ рдирд┐рд░реНрдмрд╛рдз рд░реВрдк рд╕реЗ рдПрдирд┐рдореЗрдЯ рдХрд░рддрд╛ рд╣реИ (рд▓реЛрдЧреЛ рдКрдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓реЙрдЧрд┐рди рдлрд╝реАрд▓реНрдб рдмрд╛рд╣рд░ рдХреВрдж рдЬрд╛рддрд╛ рд╣реИ)ред рдЖрд░рдПрди-рд╕реНрдкреНрд▓реИрд╢рд╕реНрдХреНрд░реАрди рдкреНрд▓рдЧрдЗрди рдлреАрдХрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдФрд░ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдерд╛ред

@BasitAli рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдкреНрд▓реИрд╢рд╕реНрдХреНрд░реАрди рдкреНрд▓рдЧрдЗрди rootView.loadingViewFadeDuration рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдлреАрдХрд╛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

[RCTSplashScreen show:rootView];
rootView.loadingViewFadeDuration = 0;

рдХреНрдпрд╛ рд╢реАрд░реНрд╖ рдкрд░ рдЙрд╕ рдЫреЛрдЯреЗ рд╕рдВрджреЗрд╢ рдХреЛ "рдкреНрд░реАрдмрдВрдбрд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ" рдХрд╣рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

@rclai рдиреЗ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ

рдЖрд╣! рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ? рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЖрдВрддрд░рд┐рдХ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ .. рд╕рд░рд▓ рдЙрддреНрддрд░ рдХреГрдкрдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж

@rclai

рдХреНрдпрд╛ рд╢реАрд░реНрд╖ рдкрд░ рдЙрд╕ рдЫреЛрдЯреЗ рд╕рдВрджреЗрд╢ рдХреЛ "рдкреНрд░реАрдмрдВрдбрд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ" рдХрд╣рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдпрд╣ рд░рд┐рд▓реАрдЬ рдореЛрдб рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдбреАрдмрдЧ рдореЛрдб рдореЗрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рднреА рдЫрд┐рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ AppDelegate рдореЗрдВ [RCTDevLoadingView setEnabled:NO]; рдбрд╛рд▓рдХрд░ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

@nicklockwood рд╣рд╛рдп рд╡рд╣рд╛рдБ, рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ? рдЕрдЧрд░ рдирд╣реАрдВ рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП/рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"SomeApp"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];

// Get launch image
NSString *launchImageName = nil;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
  CGFloat height = MAX(RCTScreenSize().width, RCTScreenSize().height);
  if (height == 480) launchImageName = @"[email protected]"; // iPhone 4/4s
  else if (height == 568) launchImageName = @"[email protected]"; // iPhone 5/5s
  else if (height == 667) launchImageName = @"[email protected]"; // iPhone 6
  else if (height == 736) launchImageName = @"[email protected]"; // iPhone 6+
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  CGFloat scale = RCTScreenScale();
  if (scale == 1) launchImageName = @"LaunchImage-700-Portrait~ipad.png"; // iPad
  else if (scale == 2) launchImageName = @"LaunchImage-700-Portrait@2x~ipad.png"; // Retina iPad
}

// Create loading view
UIImage *image = [UIImage imageNamed:launchImageName];
if (image) {
  UIImageView *imageView = [[UIImageView alloc] initWithFrame:(CGRect){CGPointZero, RCTScreenSize()}];
  imageView.contentMode = UIViewContentModeBottom;
  imageView.image = image;
  rootView.loadingView = imageView;
}

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  return YES;
}

@TeodorKolev рдореБрдЭреЗ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдлреНрд▓реИрд╢ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реЗрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

rootView.loadingViewFadeDelay

рдмрдбрд╝реЗ рдорд╛рди рдХреЗ рд▓рд┐рдП (рдпрд╣ рд╕реЗрдХрдВрдб рдореЗрдВ рд╣реИ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ 0.25 рд╣реИ)

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

рдпрд╣ рд░реЗрдЦрд╛

UIImageView *imageView = [[UIImageView alloc] initWithFrame:(CGRect){CGPointZero, RCTScreenSize()}];

рд╢рд╛рдпрдж рдмрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

UIImageView *imageView = [[UIImageView alloc] init];

рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд Contents.json рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ? рдореБрдЭреЗ рдЙрд╕ рдХреЛрдб рдореЗрдВ рдмрд╣реБ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓реА рд╣реИрдВ, рдЬреЛ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд░рд╣реА рд╣реИрдВ
(https://cloud.githubusercontent.com/assets/10398337/13778676/e01e3d32-eabf-11e5-95bf-d7a1205a5ca1.png)
рддрд░рдл рдШреВрд░ рд░рд╣рд╛:

CGFloat height = MAX(RCTScreenSize().width, RCTScreenSize().height);

@TeodorKolev Xcode рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ GUI рд╣реИред Images.xcassets рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░ + рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "App Icons & Launch Images" > "New iOS Launch Image" рдЪреБрдиреЗрдВред

screen shot 2016-03-15 at 13 47 48

@TeodorKolev рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛

#import "RCTUtils.h"

рдЖрдкрдХреЗ рдРрдкрдбрд┐рд▓реЗрдЧреЗрдЯ рдореЗрдВред

рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрд╡реНрдпреВ рдпреВрдЖрд░рдПрд▓ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдЕрдм рдпрд╣ рдЙрд╕ рддрд░рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдорд╛рди рд╕рдореНрдорд╛рди!

@nicklockwood рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЙрдкрд╛рдп рд╣реИ?

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрддрдорд╛рди рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рдЪреВрдВрдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рд╛рдордиреЗ рдЖрдП рдПрдХ рд╕рд╛рд▓ рдФрд░ рдХреБрдЫ рдорд╣реАрдиреЗ рд╣реЛ рдЧрдП рд╣реИрдВ, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЙрдкрд╛рдп рдХреНрдпрд╛ рд╣реИред рдХрд┐рд╕ рдлрд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдХрд┐рд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВ рд╕рд┐рд░реНрдл launchscreen.xib рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдРрдк рдХреЗ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЖрдзрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдлреЗрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

@ Hasen6 рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рд╣реА рдареАрдХ рд╣реЛ рдЪреБрдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░ рдХреА рдУрд░ рд╕реЗ рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдЖрдкрдХреЛ рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рдХреЗ рд╕реНрдерд╛рди рдкрд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП rootView.loadingView рдХреЛ рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП rootView.loadingViewFadeDelay рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд▓реЛрдбрд┐рдВрдЧ рджреГрд╢реНрдп рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдЫрд┐рдкрд╛ рдирд╣реАрдВ рд╣реИ рдРрдк рдиреЗ рд▓реЛрдб рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ rootView.backgroundColor рдХреЛ рдХрд╛рд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ rootView.backgroundColor = [UIColor clearColor]; рдХреЛ rootView.backgroundColor = [UIColor blackColor] рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛; but it didn't make any difference. Doing a search in XCode for rootView.loadingView` рдиреЗ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ред

@ Hasen6 рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдлреЗрдж рд░рдВрдЧ рдХрд╣рд╛рдБ рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ - рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ JS рдРрдк рдХреЗ рдЕрдВрджрд░ рдПрдХ рджреГрд╢реНрдп рд╣реЛ рдЬреЛ рд╕рдлреЗрдж рд╣реЛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛред

loadingView рдХреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ RCTRootView , рдЬреЛ рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЗ рдРрдкрдбрд┐рд▓реЗрдЧреЗрдЯ рдХреЗ рдЕрдВрджрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб rootView.loadingView рдЖрдкрдХреЗ Xcode рдореЗрдВ рддрдм рддрдХ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬрдм рддрдХ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

rootView.loadingView = [UIView new];
rootView.loadingView.backgroundColor = [UIColor blackColor];
rootView.loadingViewFadeDelay = 0.5; // measured in seconds

рдореЗрд░рд╛ рдРрдк рдХрд╣реАрдВ рднреА рд╕рдлреЗрдж рдирд╣реАрдВ рд╣реИред рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рд╕рднреА рдРрдкреНрд╕ рд▓реЛрдб рдкрд░ рдПрдХ рд╣реА рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдРрдкреНрд╕ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рддреЛ рдореБрдЭреЗ рдЙрд╕ рдХреЛрдб рдХреЛ appdelegate.m рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛? рдпрд╣ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдиреНрдпрдерд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рд▓ рднреА рдирд╣реАрдВ рдмреАрддрддрд╛, рдлрд┐рд░ рднреА рдЗрд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдРрдкреНрд╕ рдХреЛ рдХрд┐рддрдирд╛ рдЦрд░рд╛рдм рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдореЗрдВ рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реЛрдЧрд╛ред

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ LaunchScreen.xib рдФрд░ рдбреЗрд╡рд┐рдб-рдП рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

UIView *loading = [[[NSBundle mainBundle] loadNibNamed:@"LaunchScreen" owner:self options:nil] objectAtIndex:0];
rootView.loadingView = loading;
rootView.loadingViewFadeDelay = 1;

рдпрд╣ рдХреЛрдб рдареАрдХ рдиреАрдЪреЗ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ

RCTRootView *rootView = [[RCTRootView alloc] etc etc etc...]

рдЕрдЧрд░ рдореИрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рдирд┐рдХрд▓рд╡реБрдб рдХреЗ рдирдореВрдирд╛ рдХреЛрдб рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВ рддреЛ рд╕рдлреЗрдж рдлреНрд▓реИрд╢ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рд╣! рдареАрдХ рд╣реИ рдХрд┐ рдПрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж рдЧреНрд░рд┐рдЯрде!

@ рдЧреНрд░рд┐рдЯреНрдЯрд╛рде @ рд╣рд╕рди 6 рдЖрд╣, рдареАрдХ рд╣реИред рдореБрдЭреЗ рдЧрд▓рдд рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпреВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рдореЗрдВ рдерд╛ рдпрджрд┐ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рд╢реВрдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рдерд╛ _(уГД)_/┬пред

@ Hasen6 рдпрд╣рд╛рдВ рдХреЛрдб рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (xib рд╕рдорд╛рдзрд╛рди рднреА рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдмреЗрдорд╛рдиреА)ред

rootView.loadingView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
rootView.loadingView.backgroundColor = [UIColor blackColor];
rootView.loadingViewFadeDelay = 0.5; // measured in seconds

рдиреЛрдЯ: 1 ViewFadeDelay рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдмрдбрд╝рд╛ рдореВрд▓реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдРрдк рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдмрд╕реЗ рдХрдо рдореВрд▓реНрдп рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рд╕реЗ рдЖрдк рджреВрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (0.25 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ)ред

рд╣рд╛рдВ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ 1 рдереЛрдбрд╝рд╛ рд▓рдВрдмрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдПрдХ рдРрдк рдкрд░ рдУрдкрдирд┐рдВрдЧ рдПрдирд┐рдореЗрд╢рди рдХреЛ рдорд┐рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ 0.1 рднреА рдареАрдХ рд▓рдЧрд╛ред рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ @ рд╣рд╕рди 6 рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреБрд░рдВрдд рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА ( AppDelegate.m ) рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдРрдк рдмрдирд╛рдиреЗ рдкрд░ рддреБрд░рдВрдд рдХреБрдЫ рдХреЛрдб рдХреЛ рдЯреНрд╡реАрдХ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрдХ рдХрд┐рдП рдЧрдП рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдпрд╛ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рднрд╛рд╖рд╛) рд╕реЗ рд╕реНрдХреНрд░реАрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рд╛рд░ рд╕рдорд╛рдзрд╛рди рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?

@johanatan рд╡рд┐рдбрдВрдмрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЗ рд╕рд╛рде рджреЛ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдФрд░ рд╕рдмрд╕реЗ рд▓рдВрдмреА рд╕реНрдерд╛рдпреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдлреЗрдж рдлреНрд▓реИрд╢ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рд╕рдлреЗрдж рдлреНрд▓реИрд╢ред

рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди xib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

рдХреНрдпрд╛ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ?

UIView *loading = [[[NSBundle mainBundle] loadNibNamed:@"LaunchScreen" рдорд╛рд▓рд┐рдХ:рд╕реНрд╡рдпрдВ рд╡рд┐рдХрд▓реНрдк: рд╢реВрдиреНрдп ] obje ctAtIndex:0 ];
rootView.loadingView = рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ;

рд▓реЛрдбрд┐рдВрдЧ UI рджреГрд╢реНрдп, рдпрд╣ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдореЗрд░реА рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬреЛ рдХрд┐ рдореЗрд░реА LaunchScreen.xib рд╣реИ

рдореИрдВ рдЖрдХрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ BTW

@akoshdee рдпрд╣ рд╕рд╣реА рд╣реИ - рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдЖрдХрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП

loading.frame = [UIScreen mainScreen].bounds;

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлреНрд░реЗрдо рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рдия╝Я

@ajoshdee loadingView.frame = [UIScreen mainScreen].bounds; рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдореЗрд░реЗ рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛ рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдХрд┐рдпрд╛: loadingView.frame = self.window.bounds;

рдореИрдВ рдпрд╣реА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"LaunchScreen" owner:self options:nil];
UIImageView *loadingView = [nibObjects objectAtIndex:0];
loadingView.frame = self.window.bounds;
rootView.loadingView = loadingView;

рдирдорд╕реНрдХрд╛рд░! рдореИрдВ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдВрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:
rootViewController.view.backgroundColor = [UIColor blackColor];

@py110 @ajwhite

рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдорд╛рдзрд╛рди рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛ред

рдЗрд╕рдореЗрдВ 3-рд╕реНрдЯреЗрдЬ рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рд╢рд╛рдорд┐рд▓ рд╣реИред

https://github.com/mehcode/rn-splash-screen/issues/1

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛ @mehcode - рдореБрдЭреЗ рд╡рд╣ рдкрд╕рдВрдж рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдорд┐рд▓рд╛ рд╣реИред рдореИрдВ рдЖрд░рдПрди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореИрдиреЗрдЬрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрд╛ рдХрд┐ getReactNativeHost() рдХреЙрд▓ рдерд╛, рдпрд╣ рдЬрд╛рдирдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдерд╛ред

рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛ рдерд╛, (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреБрд╢ рдирд╣реАрдВ)

  1. SplashActivity рдРрдк рдЦреБрд▓рдиреЗ рдкрд░ рд╢реБрд░реВ рд╣реБрдЖ
  2. рддреБрд░рдВрдд MainActivity рдФрд░ finish() рдЦреЛрд▓рддрд╛ рд╣реИ
  3. MainActivity рдПрдХ рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде SplashActivity MainActivity рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдЕрдЧреНрд░рднреВрдорд┐ рдореЛрдб" рдореЗрдВ рд╣реИ рдЬреИрд╕реЗ рд╣реА рдпрд╣ MainActivity рдКрдкрд░ рд╕реНрдкрд▓реИрд╢ рджрд┐рдЦрд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рдмрд╛рдж, SplashActivity рдРрдк рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддреЗ рд╣реБрдП рдЦреБрдж рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред

@ajwhite

рдзрдиреНрдпрд╡рд╛рджред рдкреНрд░рднрд╛рд╡ рдмрд╣реБрдд рдЪрд┐рдХрдирд╛ рд╣реИред

рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореИрдВрдиреЗ рд╕рдЪрдореБрдЪ ReactActivity рдХреЛ рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдирд┐рдЬреА рдХреЗ рдмрдЬрд╛рдп mReactInstanceMangager рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.29 рдореЗрдВ (рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдЯреАрдо рдиреЗ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ getReactNativeHost() рджреАред

рд╡рд╣ ReactNativeHost рдХрдВрдЯреЗрдирд░ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдХрджрдо рд╣реИред рдпрд╣ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рднрд╛рдЧ рдЧрдпрд╛ - рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред

рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн: https://github.com/facebook/react-native/commit/49f20f41546e3ba8e7fe43c84c4c701684d0434d#diff -1346852de0c7f8466a36d42de50ec808R20

рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП...

рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╡рд╣ рдерд╛ rootView рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд▓реЗрдХрд┐рди [UIColor colorWithPatternImage:img] ред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рджреЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рджреГрд╢реНрдпрдорд╛рди рд░рд╣рддрд╛ рд╣реИред

рдПрдХ рдкреВрд░реНрдг рд╕реНрдирд┐рдкреЗрдЯ (рдФрд░ @ рдбрд┐рд╡рд╛рдЗрди-рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЯрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рд▓реЙрдиреНрдЪ рдЗрдореЗрдЬ рдвреВрдВрдвреЗрдЧрд╛, рдиреАрдЪреЗ рд╣реИ:

NSArray *allPngImageNames = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil];
  for (NSString *imgName in allPngImageNames){
    if ([imgName containsString:@"LaunchImage"]){
      UIImage *img = [UIImage imageNamed:imgName];

      if (img.scale == [UIScreen mainScreen].scale && CGSizeEqualToSize(img.size, [UIScreen mainScreen].bounds.size)) {
        rootView.backgroundColor = [UIColor colorWithPatternImage:img];
      }
  }
}

рд▓реЙрдиреНрдЪ рдЗрдореЗрдЬ рдЕрдм рддрдм рддрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рддрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдмрдВрдбрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред

рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдореЗрдВ рд▓рдЧрднрдЧ рд╣рд░ рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдореМрдХреЗ рдХреЗ рдЖрдЬрдорд╛рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж @dbonner1987 !

рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

@ pareekkhushboo77 https://github.com/mehcode/rn-splash-screen/blob/master/docs/android.md


@sercanov @ dbonner1987 рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░реАрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

@arnemart рдзрдиреНрдпрд╡рд╛рдж, рдЕрднреА рднреА рдереЛрдбрд╝реЗ рдЖрд░рдПрди 0.30.0 рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрдкрдирд╛ рдРрдк рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рд╕рдлреЗрдж рдлреНрд▓реИрд╢ рдерд╛, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЛрдИ рдирд╣реАрдВред

@nicklockwood рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЙрд▓рдмреИрдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореЗрд░рд╛ рдРрдк рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреАрдЪ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рд╡рд╣рд╛рдВ рдХреБрдЫ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рджреГрд╢реНрдп рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ rootView.backgroundColor рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рджрд░рд╛рдЬ рдХреЗ рдЦреБрд▓реЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рджрд░рд╛рдЬ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИред
рддреЛ рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

  • рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди @dbonner1987 рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд▓реЙрдиреНрдЪрд░ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП rootView рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВред
  • рдЬрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдкрд╣рд▓рд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдорд╛рд░реНрдЧ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╛ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ)
  • рд░реВрдЯ рд╡реНрдпреВ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд▓рд░ рдХреЛ рд╡рд╛рдкрд╕ рд╕рдлреЗрдж рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

рдЗрд╕рд▓рд┐рдП рд▓реЛрдбрд┐рдВрдЧ рдХрдм рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЙрд▓рдмреИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

@ UKDeveloper99 рдХреГрдкрдпрд╛ рдЙрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдКрдкрд░ рджреЛ рдмрд╛рд░ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИред рдРрд╕реА рдХреЙрд▓рдмреИрдХ рдЙрдкрд▓рдмреНрдз рд╣реИред

https://github.com/mehcode/rn-splash-screen/blob/master/docs/android.md

@mehcode рдпрд╣ рдПрдХрджрдо рд╕рд╣реА рд╣реИ рдзрдиреНрдпрд╡рд╛рдж !!

рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ LaunchScreen.storyboard рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рдЬреЛ рдПрдХ рдмрд╛рд░ рдмрдВрдбрд▓ рд▓реЛрдб рд╣реЛ рдЬрд╛рдиреЗ рдкрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ? рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдореБрдЭреЗ рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░рдПрди 34.1 xcode 8 рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ

@ajoshdee рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рд╣реА рдореБрджреНрджреЗ рдереЗ рдЬрд╣рд╛рдВ рджреГрд╢реНрдп рд╕реНрдХреНрд░реАрди рд╕реЗ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдерд╛ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ LaunchScreen.xib рдореЗрдВ AutoLayout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореБрдЭреЗ рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдереА

launchScreenView.autoresizingMask = UIViewAutoresizingNone;

рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред

рддреЛ https://github.com/facebook/react-native/issues/1402#issuecomment -166963438 рдКрдкрд░ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде

рдЖрдк appdelegate.m рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рд░рдВрдЧ рднреА рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];

рдЗрд╕ рд▓рд╛рдЗрди рд╕реЗ:
rootView.backgroundColor = [[UIColor alloc] initWithRed:0.94 green:0.90 blue:0.89 alpha:1.0];

рдФрд░ рдЗрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдордирдЪрд╛рд╣рд╛ рд░рдВрдЧ

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ Android рдкрд░ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреА?

рдпрд╣рд╛рдВ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ: https://github.com/mehcode/rn-splash-screen ред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ app.tsx (рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ) рдХреЗ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рдХреЛ рдЫреБрдкрд╛рдпрд╛ рдФрд░ рдореЗрд░реЗ рд╕рднреА https рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рддрдХ рд╡рд╣реА рдЫрд╡рд┐ рджрд┐рдЦрд╛рдИред

рдореЗрд░рд╛ рдХреЛрдб:
```
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ ()
{
рд╕реНрдкреНрд▓реИрд╢рд╕реНрдХреНрд░реАрдиред рдЫреБрдкрд╛рдПрдВ ();

   //after everything has finished loading - show my app.
   if (this.state.isFinishedloading) 
    {
        return (
            <this.navigator screenProps={{ ...providers }} />
        );
    }

  // Until then show the same image as the splash screen with an ActivityIndicator.
    return (
       <View style={{ flex: 1 }}>
          <Image style={styles.image} source={require('../assets/img/splash.png')} >
            <ActivityIndicator  style={styles.indicator} color="#fff"></ActivityIndicator>
          </Image>
       </View>
    );

}

```

рдЕрдЧрд░ рдореИрдВ рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдо рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░реАрди рдЫрд╡рд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред

AppDelegate.m рдЕрдВрджрд░ iOS рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдЕрдкрдиреЗ RGB рдХрд▓рд░ рдХреЛрдб рдХреЛ рддрджрдиреБрд╕рд╛рд░ рд▓рд┐рдЦрдХрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓реЗрдВ:

rootView.backgroundColor = [[UIColor alloc] initWithRed:52.0f/255.0f green:73.0f/255.0f blue:94.0f/255.0f alpha:1];

RED рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ 52 . рдмрджрд▓реЗрдВ
рдЧреНрд░реАрди рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ 73 . рдмрджрд▓реЗрдВ
BLUE рдХреЗ рд▓рд┐рдП 94 рдирдВрдмрд░ рдмрджрд▓реЗрдВ

_рдиреЛрдЯ: рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА v0.51.0_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдХреНрдпрд╛ Android рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ?

@otoinsa рдЙрдкрд░реЛрдХреНрдд рдЙрддреНрддрд░ рджреЗрдЦреЗрдВ https://github.com/facebook/react-native/issues/1402#issuecomment -339336380 @neomib рджреНрд╡рд╛рд░рд╛ред рдХреБрдЫ рдЕрдиреНрдп рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ рдЬреЛ рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ рдЬреИрд╕реЗ https://github.com/crazycodeboy/react-native-splash-screenред

рд▓реЙрдиреНрдЪрд╕реНрдХреНрд░реАрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдкрд░ рдХреЛрдИ рд╕реБрдЭрд╛рд╡?

рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рддрд░рд╣ рдерд╛ (рд▓реЗрдХрд┐рди рдРрдк рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSURL *jsCodeLocation;
    [Fabric with:@[[Crashlytics class]]];

    jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];

    RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                moduleName:@"MyApp"
                                initialProperties:nil
                                launchOptions:launchOptions];
    rootView.backgroundColor = [UIColor clearColor];

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

//  UIViewController *rootViewController = [UIViewController new];

  UIStoryboard *storyboard = self.window.rootViewController.storyboard;
  UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"the_storyboard_id"];

    rootViewController.view = rootView;
    self.window.rootViewController = rootViewController;
    [self.window makeKeyAndVisible];
    return YES;
}

рдРрдк рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

2018-03-30 11:21:04.995601+0530 MyApp[6119:101967] Running application MyApp ({
    initialProps =     {
    };
    rootTag = 1;
})
2018-03-30 11:21:05.014109+0530 MyApp[6119:101967] *** Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3698.33.6/UIApplication.m:3529
2018-03-30 11:21:05.090174+0530 MyApp[6119:101967] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application windows are expected to have a root view controller at the end of application launch'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000011170f12b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x0000000110001f41 objc_exception_throw + 48
    2   CoreFoundation                      0x00000001117142f2 +[NSException raise:format:arguments:] + 98
    3   Foundation                          0x000000010faa2d69 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193
    4   UIKit                               0x000000010d838051 -[UIApplication _runWithMainScene:transitionContext:completion:] + 3102
    5   UIKit                               0x000000010dc016f8 __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 924
    6   UIKit                               0x000000010dfd74c8 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153
    7   UIKit                               0x000000010dc012f1 -

рдзрдиреНрдпрд╡рд╛рджред

рдЬрдЧрд╣ рд▓реЗ рд▓реА

UIStoryboard *storyboard = self.window.rootViewController.storyboard;

рд╕рд╛рде

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"LaunchScreen" bundle:nil];

рдЕрдм рдРрдк рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмреНрд▓реИрдХ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдорд┐рд▓рддрд╛ рд╣реИред

рдпрд╛ рдЖрдк https://github.com/crazycodeboy/react-native-splash-screen рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ :)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

aniss picture aniss  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

phongyewtong picture phongyewtong  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

josev55 picture josev55  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

grabbou picture grabbou  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ