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.
3 Réponses :
Vous ne pouvez pas. Ces fonctionnalités ne sont pas disponibles dans Objective-C, uniquement dans Swift.
Ce sont des mots clés Swift
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
@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];
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];
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.
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.
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.