convertRectFromBacking:
デバイスのピクセルに整理された矩形を返します。
- (NSRect)convertRectFromBacking:(NSRect)aRect
func convertRectFromBacking(_ aRect: NSRect) -> NSRect
解説
デバイスのピクセルに整理された矩形を返します。
返り値
NSRectNSRect
引数
(NSRect)aRect(_ aRect: NSRect)
フレームワーク
ApplicationKit
クラス
NSScreen
使用可能
10.7
更新時のバージョン
OS X 10.10.2
参照
関連記事(外部サイト)
例文
//NSScreen convertRectFromBacking: @IBAction func function005(sender: AnyObject) { let theScreen : NSScreen = NSScreen.mainScreen()! let newRect : NSRect = theScreen.convertRectFromBacking(NSMakeRect(0.3, 0.0, 100.3, 123.5)) NSLog("newRect = (x=%.2f,y=%.2f,w=%.2f,h=%.2f)", Float(newRect.origin.x), Float(newRect.origin.y), Float(newRect.size.width), Float(newRect.size.height) ) // -> (x=0.30,y=0.00,w=100.30,h=123.50) }
backingScaleFactor
スクリーンの倍率を返します
@property(readonly) CGFloat backingScaleFactorSwift
open var backingScaleFactor: CGFloat { get }
解説
スクリーンの倍率を返します。
Retinaディスプレイの場合に2.0が返されます。
設定値
@property(readonly) CGFloat backingScaleFactorSwift
var backingScaleFactor: CGFloat { get }
フレームワーク
ApplicationKit
クラス
NSScreen
使用可能
10.7-
更新時のバージョン
OS X 10.14.5
Swift4.0
参照
関連記事(外部サイト)
例文
Swift4.0
@IBAction func function014(_ sender: Any) { let screenArray : [AnyObject] = NSScreen.screens for value in screenArray { print("backingScaleFactor = \(Float(value.backingScaleFactor)) ") //backingScaleFactor = 1.0 //backingScaleFactor = 2.0 <-retina //backingScaleFactor = 1.0 } }
Swift//NSScreen backingScaleFactor @IBAction func function004(sender: AnyObject) { let theScreen : NSScreen = NSScreen.mainScreen()! let backingScaleFactor : CGFloat = theScreen.backingScaleFactor NSLog("backingScaleFactor = %.2f",Float(backingScaleFactor) ) // -> 1.0 }
backingAlignedRect:options:
スクリーンにしたがって整理された矩形を返します
- (NSRect)backingAlignedRect:(NSRect)aRect options:(NSAlignmentOptions)optionsSwift
open func backingAlignedRect(_ rect: NSRect, options: AlignmentOptions = []) -> NSRect
解説
スクリーンにしたがって整理された矩形を返します
【NSAlignmentOptions】
alignMinXInward
Xの最小値を内側に合わせる
入力値x= -0.3の場合 x= -0.0が返されます。
入力値x= 0.3の場合 x= 1.0が返されます。
alignMinYInward
alignMaxXInward
Xの最大値を内側に合わせる
入力値x=0.3)width= 100.3で(AlignMinXInward | (y) |AlignMaxXInward | (y))の場合
まずxが0.0に調整されます。その後widthが100.3が内側に調整されます。
したがって、x= 0.0,width=100.0が返されます。
alignMaxYInward
alignWidthInward
alignHeightInward
alignMinXOutward
Xの最小値を外側に合わせる
入力値x= -0.3の場合 x= -1.0が返されます。
入力値x= 0.3の場合 x= 0.0が返されます。
alignMinYOutward
alignMaxXOutward
alignMaxYOutward
alignWidthOutward
alignHeightOutward
alignMinXNearest
alignMinYNearest
alignMaxXNearest
alignMaxYNearest
alignWidthNearest
alignHeightNearest
alignAllEdgesInward
すべての調整を内側にする
alignAllEdgesOutward
すべての調整を外側にする
alignAllEdgesNearest
すべての調整を近くにする
返り値
NSRect
Swift
AlignmentOptions
引数
(NSRect)aRect
Swift
_ aRect: NSRect
(NSAlignmentOptions)options
Swift
options: NSAlignmentOptions
フレームワーク
ApplicationKit
クラス
NSScreen
使用可能
10.7-
更新時のバージョン
OS X 10.14.5
Swinft4.0
参照
関連記事(外部サイト)
例文
Swift4.0
@IBAction func function013(_ sender: Any) { let screenArray : [NSScreen] = NSScreen.screens for theScreen in screenArray { //全部内側 let aligneRect001 : NSRect = theScreen.backingAlignedRect( NSMakeRect(0.3, 0.0, 100.3, 123.5), options: AlignmentOptions.alignAllEdgesInward ) NSLog("aligneRect001 = (x=%.1f,y=%.1f,w=%.1f,h=%.1f)", Float(aligneRect001.origin.x), Float(aligneRect001.origin.y), Float(aligneRect001.size.width), Float(aligneRect001.size.height) ) //display1 aligneRect001 = (x=1.0,y=0.0,w=99.0,h=123.0) //display2 aligneRect001 = (x=0.5,y=0.0,w=100.0,h=123.5) <-Retina //display3 aligneRect001 = (x=1.0,y=0.0,w=99.0,h=123.0) //それぞれ設定 let aligneOption002: AlignmentOptions = [.alignMinXInward, .alignMaxXInward, .alignMinYInward, .alignMaxYInward] let aligneRect002 : NSRect = theScreen.backingAlignedRect( NSMakeRect(0.3, 0.0, 100.3, 123.5), options: aligneOption002 ) NSLog("aligneRect002 = (x=%.1f,y=%.1f,w=%.1f,h=%.1f)", Float(aligneRect002.origin.x), Float(aligneRect002.origin.y), Float(aligneRect002.size.width), Float(aligneRect002.size.height) ) //(0.3, 0.0, 100.3, 123.5)の場合 //display1 aligneRect002 = (x=1.0,y=0.0,w=99.0,h=123.0) //display2 aligneRect002 = (x=0.5,y=0.0,w=100.0,h=123.5) //display3 aligneRect002 = (x=1.0,y=0.0,w=99.0,h=123.0) //Flip? let aligneOption003: AlignmentOptions = [.alignMinXInward, .alignMaxXInward, .alignMinYInward, .alignMaxYInward] let aligneRect003 : NSRect = theScreen.backingAlignedRect( NSMakeRect(0.3, 0.0, 100.3, 123.5), options: aligneOption003 ) NSLog("aligneRect003 = (x=%.1f,y=%.1f,w=%.1f,h=%.1f)", Float(aligneRect003.origin.x), Float(aligneRect003.origin.y), Float(aligneRect003.size.width), Float(aligneRect003.size.height) ) //(0.3, 0.0, 100.3, 123.5) //display1 aligneRect003 = (x=1.0,y=0.0,w=99.0,h=123.0) //display2 aligneRect003 = (x=0.5,y=0.0,w=100.0,h=123.5) //display3 aligneRect003 = (x=1.0,y=0.0,w=99.0,h=123.0) // let aligneRect004 : NSRect = theScreen.backingAlignedRect( NSMakeRect(0.3, 0.0, 100.3, 123.5), options: [AlignmentOptions.alignMinXInward , .alignMinYNearest , .alignMaxXInward , .alignMaxYNearest] ) NSLog("aligneRect004 = (x=%.1f,y=%.1f,w=%.1f,h=%.1f)", Float(aligneRect004.origin.x), Float(aligneRect004.origin.y), Float(aligneRect004.size.width), Float(aligneRect004.size.height) ) //(0.3, 0.0, 100.3, 123.5) //display1 aligneRect004 = (x=1.0,y=0.0,w=99.0,h=124.0) //display2 aligneRect004 = (x=0.5,y=0.0,w=100.0,h=123.5) //display3 aligneRect004 = (x=1.0,y=0.0,w=99.0,h=124.0) } }
Swift//NSScreen backingAlignedRect @IBAction func function003(sender: AnyObject) { let theScreen : NSScreen = NSScreen.mainScreen()! //全部内側 let aligneRect001 : NSRect = theScreen.backingAlignedRect( NSMakeRect(0.3, 0.0, 100.3, 123.5), options: NSAlignmentOptions.AlignAllEdgesInward ) NSLog("aligneRect001 = (x=%.1f,y=%.1f,w=%.1f,h=%.1f)", Float(aligneRect001.origin.x), Float(aligneRect001.origin.y), Float(aligneRect001.size.width), Float(aligneRect001.size.height) ) // ->aligneRect = (x=1.0,y=0.0,w=99.0,h=123.0) //それぞれ設定 let aligneRect002 : NSRect = theScreen.backingAlignedRect( NSMakeRect(0.3, 0.0, 100.3, 123.5), options: NSAlignmentOptions.AlignMinXInward | .AlignMinYNearest | .AlignMaxXInward | .AlignMaxYNearest ) NSLog("aligneRect002 = (x=%.1f,y=%.1f,w=%.1f,h=%.1f)", Float(aligneRect002.origin.x), Float(aligneRect002.origin.y), Float(aligneRect002.size.width), Float(aligneRect002.size.height) ) //(0.3, 0.0, 100.3, 123.5)の場合 // ->aligneRect002 = (x=1.0,y=0.0,w=99.0,h=124.0) //(-0.3, 0.0, 100.3, 123.5)の場合 // ->aligneRect002 = (x=-0.0,y=0.0,w=100.0,h=124.0) //(-0.8, 0.0, 100.3, 123.5)の場合 // ->aligneRect002 = (x=-0.0,y=0.0,w=99.0,h=124.0) //Flip? let aligneRect003 : NSRect = theScreen.backingAlignedRect( NSMakeRect(0.3, 0.0, 100.3, 123.5), options: NSAlignmentOptions.AlignRectFlipped | .AlignMinXInward | .AlignMinYNearest | .AlignMaxXInward | .AlignMaxYNearest ) NSLog("aligneRect003 = (x=%.1f,y=%.1f,w=%.1f,h=%.1f)", Float(aligneRect003.origin.x), Float(aligneRect003.origin.y), Float(aligneRect003.size.width), Float(aligneRect003.size.height) ) //(0.3, 0.0, 100.3, 123.5) //aligneRect003 = (x=1.0,y=-0.0,w=99.0,h=123.0) // let aligneRect004 : NSRect = theScreen.backingAlignedRect( NSMakeRect(0.3, 0.0, 100.3, 123.5), options: NSAlignmentOptions.AlignMinXInward | .AlignMinYNearest | .AlignMaxXInward | .AlignMaxYNearest ) NSLog("aligneRect004 = (x=%.1f,y=%.1f,w=%.1f,h=%.1f)", Float(aligneRect004.origin.x), Float(aligneRect004.origin.y), Float(aligneRect004.size.width), Float(aligneRect004.size.height) ) //(0.3, 0.0, 100.3, 123.5) //aligneRect003 = (x=1.0,y=-0.0,w=99.0,h=123.0) }
colorSpace
カラースペースを返します
Swift
open var colorSpace: NSColorSpace? { get }@property(readonly, strong) NSColorSpace *colorSpace
解説
カラースペースを返します。
返り値
@property(readonly, strong) NSColorSpace *colorSpaceSwift
var colorSpace: NSColorSpace? { get }
フレームワーク
ApplicationKit
クラス
NSScreen
使用可能
10.6-
更新時のバージョン
OS X 10.14.5
Swift4.0
参照
関連記事(外部サイト)
例文
Swift4.0@IBAction func function006(_ sender: Any) { let screenArray : [AnyObject] = NSScreen.screens for value in screenArray { let space :NSColorSpace = value.colorSpace! // print(space.localizedName as Any) //->Color LCD colorspace print(space.numberOfColorComponents) //->3 } }
Swift//NSScreen mainScreen() //NSScreen deepestScreen() //NSScreen screens() //NSScreen supportedWindowDepths() //NSScreen deviceDescription //NSScreen visibleFrame //NSScreen colorSpace @IBAction func function001(sender: AnyObject) { let theScreen : NSScreen = NSScreen.mainScreen()! NSLog("main screen size= (%.2f✕%.2f)", Float(theScreen.frame.size.width), Float(theScreen.frame.size.height) ) //-> main screen size= (1366.00✕768.00) let deepestScreen : NSScreen = NSScreen.deepestScreen()! NSLog("deepestScreen screen depth= %d", NSBitsPerPixelFromDepth(deepestScreen.depth) ) //-> deepestScreen screen depth= 24 let supportedWindowDepths : UnsafePointer<NSWindowDepth> = theScreen.supportedWindowDepths NSLog("supportedWindowDepths = %d", NSBitsPerPixelFromDepth( supportedWindowDepths[0]) ) //-> supportedWindowDepths = 8 let screenArray : [AnyObject] = NSScreen.screens()! for value in screenArray { NSLog("screen size= (%.2f✕%.2f)", Float(value.frame.size.width), Float(value.frame.size.height) ) } //-> screen size= (1366.00✕768.00) //-> screen size= (1920.00✕1080.00) let descDic : [NSObject:AnyObject] = theScreen.deviceDescription NSLog("description = %@", descDic ) //description = { // NSDeviceBitsPerSample = 8; // NSDeviceColorSpaceName = NSCalibratedRGBColorSpace; // NSDeviceIsScreen = YES; // NSDeviceResolution = "NSSize: {72, 72}"; // NSDeviceSize = "NSSize: {1366, 768}"; // NSScreenNumber = 69680256; //} let visibleFrame : NSRect = theScreen.visibleFrame NSLog("visibleFrame = (x=%.2f,y=%.2f,w=%.2f,h=%.2f)", Float(visibleFrame.origin.x), Float(visibleFrame.origin.y), Float(visibleFrame.size.width), Float(visibleFrame.size.height) ) // -> visibleFrame = (x=0.00,y=43.00,w=1366.00,h=702.00) let colorSpace : NSColorSpace = theScreen.colorSpace! NSLog("colorSpace = %@",colorSpace.description) // -> colorSpace = Color LCD colorspace var window : NSWindow = NSWindow(contentRect: NSMakeRect(0.0, 0.0, 300.0, 200.0), styleMask: NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask, backing: .Buffered, defer: false, screen: theScreen ) windowArray.addObject(window) //ウインドウを保持するための配列に追加。アプリ終了時に配列は破棄 window.center()//ウインドウをスクリーンの中心に window.title = "ウインドウタイトル"//タイトル設定 window.orderFront(self)//前面に window.makeKeyAndOrderFront(self)//表示 }
Workspace 起動設定オプション
起動オプション
NSString * const NSWorkspaceLaunchConfigurationAppleEvent; NSString * const NSWorkspaceLaunchConfigurationArguments; NSString * const NSWorkspaceLaunchConfigurationEnvironment; NSString * const NSWorkspaceLaunchConfigurationArchitecture;let NSWorkspaceLaunchConfigurationAppleEvent: String let NSWorkspaceLaunchConfigurationArguments: String let NSWorkspaceLaunchConfigurationEnvironment: String let NSWorkspaceLaunchConfigurationArchitecture: String
解説
launchApplicationAtURL:options:configuration:error: メソッドで使用
NSWorkspaceLaunchConfigurationAppleEvent
アップルイベント
NSWorkspaceLaunchConfigurationArguments
起動時の引数
NSWorkspaceLaunchConfigurationEnvironment
環境変数
NSWorkspaceLaunchConfigurationArchitecture
アーキテクチャ
NSBundleExecutableArchitectureI386
386
NSBundleExecutableArchitecturePPC
PowerPC
NSBundleExecutableArchitectureX86_64
x86 64ビット
NSBundleExecutableArchitecturePPC64
PowerPC 64ビット
フレームワーク
ApplicationKit
クラス
NSWorkspace
使用可能
10.6-
更新時のバージョン
OS X 10.10.3
Swift1.2
例文
//NSWorkspace launchApplicationAtURL:options:configuration:error: @IBAction func function009(sender: AnyObject) { let theWorkspace : NSWorkspace = NSWorkspace.sharedWorkspace() var anError: NSError? let andPrint = NSWorkspaceLaunchOptions.AndPrint.rawValue let mask = Int( andPrint ) // cast from UInt let theURL : NSURL = NSURL(fileURLWithPath: "/Applications/iTunes.app")! let theOption : NSNumber = NSNumber(integer: 0) //32ビットモードで起動 let theArc : NSNumber = NSNumber(integer: NSBundleExecutableArchitectureI386) //64ビットモードで起動 //let theArc : NSNumber = NSNumber(integer: NSBundleExecutableArchitectureX86_64) let theConfig : [NSObject : AnyObject] = [NSWorkspaceLaunchConfigurationArchitecture : theArc] if (theWorkspace.launchApplicationAtURL(theURL, options: NSWorkspaceLaunchOptions.Async, configuration: theConfig, error: &anError) != nil){ NSLog("YES") }else{ NSLog("NO") } }
type:conformsToType:
あるUTIタイプは別のUTIタイプに包含されるかを返します
- (BOOL)type:(NSString *)firstTypeName conformsToType:(NSString *)secondTypeNamefunc type(_ firstTypeName: String, conformsToType secondTypeName: String) -> Bool
解説
secondTypeNameはfirstTypeNameを包含するか。
例えば
firstTypeName = 「com.compuserve.gif」でsecondTypeNameが「public.data」の場合gifファイルはデータであるのでYES(true)が返されます。
firstTypeName = 「public.data」でsecondTypeNameが「com.compuserve.gif」の場合、データは必ずしもgifファイルではないのでNO(false)が返されます。
firstTypeName = 「com.compuserve.gif」でsecondTypeNameが「public.png」の場合、gifファイルはpngファイルではないのでNO(false)が返されます。
返り値
包含するかどうか
Objective-CBOOL
Bool
引数
(NSString *)firstTypeName_ firstTypeName: String
(NSString *)secondTypeNamesecondTypeName: String
フレームワーク
ApplicationKit
クラス
NSWorkspace
使用可能
10.0
更新時のバージョン
OS X 10.10.3
Swift1.2
参照
関連記事(外部サイト)
例文
//NSWorkspace type:conformsToType: @IBAction func function021(sender: AnyObject) { let theWorkspace : NSWorkspace = NSWorkspace.sharedWorkspace() if (theWorkspace.type("com.compuserve.gif", conformsToType: "public.data") ){ NSLog("YES") }else{ NSLog("NO") } //->YES gifはdataに包含される if (theWorkspace.type("public.data", conformsToType: "com.compuserve.gif") ){ NSLog("YES") }else{ NSLog("NO") } //->NO dataはgifに包含されない if (theWorkspace.type("com.compuserve.gif", conformsToType: "public.png") ){ NSLog("YES") }else{ NSLog("NO") } //->NO gifはpngに包含されない }
preferredFilenameExtensionForType:
UTIに基づいた優先の拡張子を返します
- (NSString *)preferredFilenameExtensionForType:(NSString *)typeName
func preferredFilenameExtensionForType(_ typeName: String) -> String?
返り値
(NSString *)String?
引数
(NSString *)typeName_ typeName: String
フレームワーク
ApplicationKit
クラス
NSWorkspace
使用可能
10.5-
更新時のバージョン
OS X 10.10.3
Swift1.2
参照
関連記事(外部サイト)
例文
//NSWorkspace preferredFilenameExtensionForType: @IBAction func function019(sender: AnyObject) { //ファイルを選択 var openPanel = NSOpenPanel() openPanel.allowsMultipleSelection = false openPanel.canChooseDirectories = false openPanel.canCreateDirectories = false openPanel.canChooseFiles = true openPanel.beginWithCompletionHandler { (result) -> Void in //オープンパネルでOKを選択したら if result == NSFileHandlingPanelOKButton { //選択したファイルを let theWorkspace : NSWorkspace = NSWorkspace.sharedWorkspace() let theURL : NSURL = openPanel.URL! let filepath : NSString = theURL.path! var anError : NSError? let utiType : NSString? = theWorkspace.typeOfFile(filepath as String, error: &anError) if utiType != nil { NSLog("%@", utiType!) //Ex.->com.apple.web-internet-location , com.compuserve.gif NSLog("%@", theWorkspace.preferredFilenameExtensionForType(utiType! as String)!) //Ex.->webloc , gif } }//if result }//openPanel.beginWithCompletionHandler }