3
NSWindow 객체에서 setColorSpace를 호출하면 색상이 변경되지 않습니다. 색상이 렌더링되는 방식을 동적으로 변경할 수 있다는 인상하에있었습니다. 여기 OSX NSColorspace를 사용하여 colorsync 프로필을 토글합니다.
내 컨트롤러 여기#import <Cocoa/Cocoa.h>
@interface MainWindow : NSWindowController <NSTextFieldDelegate>
{
}
@property (strong) IBOutlet NSWindow *theWindow;
@property (weak) IBOutlet NSTextField *RedField;
@property (weak) IBOutlet NSTextField *GreenField;
@property (weak) IBOutlet NSTextField *BlueField;
@property (weak) IBOutlet NSTextField *PatternField;
@property (weak) IBOutlet NSButton *ICCBox;
- (IBAction)UpdateICC:(id)sender;
@end
에 대한 .H 파일 내 컨트롤러
#import "MainWindow.h"
#import <AppKit/AppKit.h>
@interface MainWindow()
@end
@implementation MainWindow
- (id)init
{
self = [super init];
return self;
}
- (void)awakeFromNib
{
[_RedField setDelegate:self];
[_GreenField setDelegate:self];
[_BlueField setDelegate:self];
}
-(void) controlTextDidChange:(NSNotification *) note {
float redByte = [_RedField floatValue];
float redF = redByte/255.0;
float greenByte = [_GreenField floatValue];
float greenF = greenByte/255.0;
float blueByte = [_BlueField floatValue];
float blueF = blueByte/255.0;
_PatternField.backgroundColor = [NSColor colorWithCalibratedRed:redF green:greenF blue:blueF alpha:1];
}
- (IBAction)UpdateICC:(id)sender {
NSColorSpace *acs = [NSColorSpace adobeRGB1998ColorSpace];
NSColorSpace *scs = [NSColorSpace sRGBColorSpace];
NSColorSpace *dcs = [NSColorSpace deviceRGBColorSpace];
if(_ICCBox.state == NSOnState)
{
[_theWindow setColorSpace:scs];
}
else
{
[_theWindow setColorSpace:dcs];
}
}
@end
이 작동하지 않는 이유는 어떤 생각의하는 .m 파일입니다?
변경 후'setViewsNeedDisplay'를 호출해야합니까? – user1118321
그럴 것 같지 않습니다. 그냥 통화를 추가하려고 시도했지만 동작이 변경되지 않았습니다. 또한 디스플레이 ICC 프로필을 전환 할 때 창에서 색상이 변경됩니다. 그래서 현재 내가 얻고있는 것은 sRGB 관리 컬러입니다. –