Chcę utworzyć kategorię UIColor
w mojej aplikacji za pomocą Xcode 6. Ale chodzi o to, że w Xcode 6 nie ma szablonu pliku kategorii Objective-C.
Czy jest jakaś opcja utworzenia kategorii w Xcode 6?
@interface UIColor(MyCategory) ...
etc
Chcę utworzyć kategorię UIColor
w mojej aplikacji za pomocą Xcode 6. Ale chodzi o to, że w Xcode 6 nie ma szablonu pliku kategorii Objective-C.
Czy jest jakaś opcja utworzenia kategorii w Xcode 6?
@interface UIColor(MyCategory) ...
etc
Odpowiedzi:
Nie zapomnieli. Po prostu przenieśli go, nie mówiąc o tym nikomu.
Kliknij File
-> New
->File
Wybierz Objective-C file
poniżej Sources
w iOS
lub Mac OS
odpowiednio i kliknij przycisk Dalej
Teraz pod File Type:
wybrać jedną Category
, Protocol
lubExtension
PS. Pod File Name:
cokolwiek wpiszesz tutaj będzie albo Category
, Protocol
lub Extension
Nazwa.
Objective-C File
przez XCode 6 to „Pusty plik Objective-C”. Zamiast mojego opisu, który byłby „jednym ze starych, wcale nie pustych plików Objective-C, do którego jesteś przyzwyczajony” , co całkiem mnie odrzuciło!
Aktualizacja Xcode6-Beta5
Interfejs się zmienił i możliwe jest dodanie kategorii bezpośrednio z okna Nowy> Plik.
Zobacz odpowiedź Unmircei .
Sam byłem zaskoczony i chyba dzięki Szybkiemu zapomnieli o starym, dobrym Celu-C.
Masz dwie opcje:
Utwórz klasę Objective-C z nazwą kategorii, na przykład UIView+Powerups
, a następnie ręcznie zmień interfejs, aby pasował do kategorii. Pamiętaj, że fragment interfejsu kategorii i implementacji nadal działa, więc jest to wyjątkowo łatwe: wpisz @interface-category
i @implementation-category
.
Zaimportuj go z Xcode 5! Użyj tego polecenia:
cp -r /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Cocoa\ Touch/Objective-C\ category.xctemplate /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Source/
Zamknij i ponownie otwórz Xcode 6, a w kreatorze nowego pliku znajdziesz „Kategoria celu C”.
W Xcode 6 beta nie ma wstępnie zdefiniowanego szablonu do tworzenia kategorii (na razie), mogą dodać tę opcję później. Aby obejść ten problem , możesz utworzyć Cocoa Touch Class
(jego nie wiem, ale nie ma innego sposobu) o nazwie UIImage+Additions
(ClassName + CategoryName) i zastąpić jego interfejs i implementację.
#import <UIKit/UIKit.h>
@interface UIImage(Additions)
+(void)testMethod;
@end
#import "UIImage+Additions.h"
@implementation UIImage (Additions)
+(void)testMethod
{
}
@end
Edytuj
Ta odpowiedź została napisana przed znalezieniem sposobu na utworzenie kategorii w Xcode 6 beta. Sprawdź odpowiedź Unmircei na właściwy sposób tworzenia kategorii
Rozszerzając fantastyczną odpowiedź Unmircei na temat: jak utworzyć niestandardową kategorię w celu zaimplementowania niestandardowej UIColor
palety, możesz utworzyć kategorię.
Po utworzeniu swoją kategorię (w tym przykładzie jest to kategoria o nazwie ColorPalette
z klasą UIColor
), będziesz mieć nagłówek i plik realizacji.
UIColor + ColorPalette.h
#import <UIKit/UIKit.h>
@interface UIColor (ColorPalette)
// Your custom colors
+ (UIColor *) customRedButtonColor;
+ (UIColor *) customGreenButtonColor;
@end
UIColor + ColorPalette.m
#import "UIColor+ColorPalette.h"
@implementation UIColor (ColorPalette)
// Button Colors
+ (UIColor *) customRedButtonColor {
return [UIColor colorWithRed:178.0/255.0 green:25.0/255.0 blue:0.0/255.0 alpha:1.0];
}
+ (UIColor *) customGreenButtonColor {
return [UIColor colorWithRed:20.0/255.0 green:158.0/255.0 blue:96.0/255.0 alpha:1.0];
}
Aby użyć niestandardowej palety kolorów, wystarczy zaimportować nagłówek do klasy, w której chcesz zaimplementować niestandardowe kolory:
#import "UIColor+ColorPalette.h"
i wywołać kolor tak jak standardowy kolor podobny redColor
, greenColor
albo blueColor
.
Oto link do nieco bardziej dogłębnej dyskusji na temat tworzenia niestandardowej palety.
Dodatkowo, oto narzędzie, które pomoże Ci wybrać niestandardowe wartości kolorów
Możesz po prostu skopiować szablony, które chcesz ze starszej wersji Xcode, stworzyłem do tego skrypt powłoki: https://github.com/cDigger/AddMissingTemplates
Możesz utworzyć plik „rozszerzenia”, taki jak NSString + Helper:
1: File → New → File... or use ⌘N.
2: Name NSString+Helper (For example)
3: create the file
4: Remove the code from file
5: add
extension NSString {
}
Gotowy. miłego kodowania