1
votes

Comment utiliser colorLiteral, imageLiteral dans l'objectif C

J'ai récemment appris à utiliser colorLiteral et imageLiteral dans Xcode 11. Cela fonctionne très bien dans mon fichier swift. Comment puis-je utiliser colorLiteral et imageLiteral sur un fichier Objective C?

Il semble que Xcode ne prend pas en charge colorLiteral et imageLiteral pour Objective C.


1 commentaires

Je recommanderais de ne pas les utiliser du tout en dehors des terrains de jeux, mais je suppose que cet avis n'est pas si courant. Si possible, utilisez des ressources de couleur et chargez la couleur par nom, ou au moins créez une extension UIColor distincte avec des constantes de couleur.


3 Réponses :


1
votes

Vous ne pouvez pas. Ces fonctionnalités ne sont pas disponibles dans Objective-C, uniquement dans Swift.

Ce sont des mots clés Swift


0 commentaires

1
votes

Avec la référence

Objective-C ne prend pas en charge couleur littérale et image littérale . Les deux introduisent dans Swift , tôt que

  • Pour utiliser une image en Objective-C
@interface UIColor (MyColours)
+ (instancetype)lightGrayHeader;
@end

@implementation UIColor (MyColours)
+ (instancetype)lightGrayHeader {
  return [self  colorWithRed:246/255.f green:239/255.f blue:239/255.f alpha:1.0];
}
@end

And then as long as you import the UIColor (MyColours) header, you could use:

self.view.backgroundColor = [UIColor lightGrayHeader];
  • Pour la couleur
UIColor *lightGrayHeader = [UIColor colorWithRed:246/255.f green:239/255.f blue:239/255.f alpha:1.0];
self.view.backgroundColor = lightGrayHeader;

Si vous souhaitez utiliser une méthode statique sur UIColor pour récupérer une couleur , vous pouvez le faire:

UIImageView *imgview = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)];
[imgview setImage:[UIImage imageNamed:@"YourImageName"]];
[imgview setContentMode:UIViewContentModeScaleAspectFit];
[self.view addSubview:imgview];


2 commentaires

En complément de votre réponse: pour utiliser les couleurs que vous avez définies dans le dossier xcassets, vous pouvez également utiliser [UIColor colorNamed: @ "colorNameHere"] bien que disponible uniquement pour iOS 11 et plus.


Je sais comment utiliser set Color and Image dans Objective C. Je veux juste changer facilement la valeur en utilisant colorLiteral et imageLiteral. Ma solution de contournement consiste à créer un fichier rapide et à l'importer dans Objective C.



0
votes

Il s'avère que ces fonctionnalités ne sont pas disponibles en Objective-C. Ma solution de contournement consiste à créer un fichier rapide pour imageLiteral et colorLiteral et à les importer dans un fichier objectif c.

Utils.swift

Utils * utils = [Utils new];
label.textColor = utils.textColor;

Fichier objectif C:

import UIKit

@objc class Utils: NSObject {



   @objc var textColor = #colorLiteral(red: 0.5609482021, green: 1, blue: 0.3726723031, alpha: 1)

}

De cette façon, je peux profiter de la fonction colorLiteral pour Projet Objective-C.


0 commentaires