macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

backingAlignedRect:options:

INDEX>AppKit>NSScreen

スクリーンにしたがって整理された矩形を返します

Objective-C

- (NSRect)backingAlignedRect:(NSRect)aRect
                     options:(NSAlignmentOptions)options

Swift

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
 すべての調整を近くにする

返り値

Objective-C

NSRect

Swift

AlignmentOptions

引数

Objective-C

(NSRect)aRect

Swift

_ aRect: NSRect

Objective-C

(NSAlignmentOptions)options

Swift

options: NSAlignmentOptions

フレームワーク

ApplicationKit

クラス

NSScreen

使用可能

10.7-

更新時のバージョン

OS X 10.14.5
Swinft4.0

参照

関連記事(外部サイト)

stackoverflow.com

例文

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)

    }