[macOS]init windows position——方法二:代码实现

新建一个文件继承自NSWindowController的类windowController。

选择类:

    

在windowController.swift编写代码。

在windowDidLoad里面添加代码:

if let window = window, screen = window.screen {
            let offsetFromLeftOfScreen: CGFloat = 20
            let offsetFromTopOfScreen: CGFloat = 20
            let screenRect = screen.visibleFrame
            print(screenRect)
            let newOriginY = CGRectGetMaxY(screenRect) - window.frame.height - offsetFromTopOfScreen
            //设置窗口左下角坐标
            window.setFrameOrigin(NSPoint(x: offsetFromLeftOfScreen, y: newOriginY))
        }

运行我们可以看到:

还有一个

我们可以看出screenRect是屏幕尺寸!

这时还有一个问题,new一个窗口的话会和原来的窗口完全重叠,这样是非常不友好的,怎么解决呢?

加一段代码就ok了:

required init?(coder: NSCoder) {
        super.init(coder: coder)
        //设置新窗口弹出瀑布式
        shouldCascadeWindows = true
    }

再运行下看看:

时间: 2024-11-05 14:37:13

[macOS]init windows position——方法二:代码实现的相关文章

[macOS]init windows position——方法一:直接在属性面板定义

打开一个应用,File/new,会打开一个窗口,这个窗口的位置我们是可以自定义的. 创建一个项目,我们用Document-Based Application做例子说这个问题. 第一个方法:属性面板定义 选中这个 在这个虚拟的屏幕可以看大概位置. 拖动灰色的方块,运行一下,关闭窗口,然后File/new,就会变成这样: 看,窗口出现在了虚拟屏幕出现的位置. 注意:macOS的坐标系统和iOS不一样,原点在左下角,iOS在左上角! 这里有个问题,mac屏幕尺寸有13‘有14’有21‘,这时修改这两个

[程序员代码面试指南]链表问题-复制含有随机指针节点的链表(方法二待做)

问题描述 public class Node { public int val; public Node next; public Node rand; public Node(int data) { this.val=data; } } Node类中的value是节点值,next指针和正常单链表中next指针的意义一样,都指向下一个节点,rand指针是Node类中新增的指针,这个指针可能指向链表中的任意一个节点,也可能指向null. 给定一个由Node节点类型组成的无环单链表的头节点head,

如何实现在Windows下编写的代码,直接在Linux下编译

方法一: 如何实现在Windows7下编写Linux程序,写完程序以后,不用拷贝文件,直接在Linux(RHEL6.5)机器上编译最新的代码. 1.首先将Windows的代码文件夹设置为共享文件夹: 2.在RHEL6.5上,利用mount命令把Win7下的文件夹给mount到本地的一个文件夹 其中192.168.59.1是Win7的OS,VMTool是本地的一个文件夹. 3. 在~/.bash_profile中添加如下行,这样每次启动的时候,就会自动mount这个文件夹. mount  //19

python有超时的windows系统时间设置代码

手边的笔记本用久了,cmos电池可能又没电了.每次开机时间都不对,导致访问一些有https的网页会出现警告信息. 于是找了找通过python脚本设置系统时间的方法,发现了两种,其一是调用socket直接发送udp包到国家授时中心,其二是调用ntplib包.我在本地电脑ping 国家授时中心地址cn.pool.ntp.org有时出现丢包,然而,二者都没有检查udp是否丢包的机制,方法一在udp丢包后一直处于阻塞状态无法退出,方法二虽然会提示超时,但是不再做其它尝试,比如重新发包,或者向同一个域名的

ReactiveSwift源码解析(九) SignalProducerProtocol延展中的Start、Lift系列方法的代码实现

上篇博客我们聊完SignalProducer结构体的基本实现后,我们接下来就聊一下SignalProducerProtocol延展中的start和lift系列方法.SignalProducer结构体的方法扩展与Signal的扩展相同,都是面向协议的扩展.首先创建了一个SignalProducerProtocol协议,使SignalProducer在延展中遵循SignalProducerProtocol协议.然后我们再对SignalProducerProtocol进行扩展.这样一来,SignalP

Windows 7 蓝屏代码大全 & 蓝屏全攻略

关于Windows 7.Vista等系统的蓝屏,之前软媒在Win7之家和Vista之家都有很多文章讨论过,但是都是筛选的常见的一些问题,今天这个文章是个大全,希望大家看着别头痛,文章收藏下来以后待查即可. 另外,推荐大家读下<Windows XP/Vista/Windows 7常见蓝屏故障分析>. 一.蓝屏含义 1.故障检查信息 ***STOP 0x0000001E(0xC0000005,0xFDE38AF9,0x0000001,0x7E8B0EB4) KMODE_EXCEPTION_NOT_

RAC(ReactiveCocoa)使用方法(二)

RAC(ReactiveCocoa)使用方法(一) RAC(ReactiveCocoa)使用方法(二) 上篇文章:RAC(ReactiveCocoa)使用方法(一) 中主要介绍了一些RAC中常见类的用法,这篇文章主要总结日常开发中结合一些UI控件的用法. RAC给常见的很多UI类拓展了用法,使得开发变得越来越简单,减少了很多不必要的代理和Target代码,RAC内部已经处理好了这些事件. --- 网络请求 贴上核心代码,具体代码见Github; // // ViewModel.m // // /

使用.NET Core创建Windows服务(二) - 使用Topshelf方式

原文:Creating Windows Services In .NET Core – Part 2 – The "Topshelf" Way 作者:Dotnet Core Tutorials 译者:Lamond Lu 译文:使用.NET Core创建Windows服务(二) - 使用Topshelf方式 使用.NET Core创建Windows服务 使用微软推荐方式 使用Topshelf方式 在前一篇文章中,我给大家介绍了,如何基于微软推荐方式使用.NET Core创建Windows

MySql5.7.11 for Windows 安装(二)

原文:MySql5.7.11 for Windows 安装(二) 安装之后,首先创建data文件夹(旧版本本来就有),管理员打开cmd,cd到bin文件夹,输入 mysqld –initialize-insecure –user=mysql,data文件夹就愉快的生成了. 安装后退出之后,再次登录时候,遇到密码处回车,就会出错 这就相当于忘记root密码 -关闭服务 net stop mysql 我们在my.ini中添加一行代码,在[mysqld]下面添加: skip-grant-tables