首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在CATransform3DMakeTranslation之后NSButton不可调用

在CATransform3DMakeTranslation之后,NSButton不可调用的原因是CATransform3DMakeTranslation函数会对视图进行平移变换,但是该函数只是对视图的显示进行了变换,并没有改变视图的实际位置。因此,当我们调用NSButton的方法时,由于视图的实际位置并没有改变,所以无法触发相应的事件。

解决这个问题的方法是使用CATransform3DConcat函数将平移变换与视图的transform属性进行连接,从而改变视图的实际位置。具体操作如下:

  1. 首先,创建一个CATransform3D类型的变量,用于保存平移变换的值,例如:
代码语言:swift
复制

let translation = CATransform3DMakeTranslation(x, y, z)

代码语言:txt
复制

其中,x、y、z分别表示在x轴、y轴和z轴上的平移距离。

  1. 然后,将平移变换与视图的transform属性进行连接,例如:
代码语言:swift
复制

button.layer.transform = CATransform3DConcat(button.layer.transform, translation)

代码语言:txt
复制

这样,平移变换就会被应用到视图上,并且视图的实际位置也会相应地改变。

需要注意的是,CATransform3DConcat函数会将两个变换连接起来,并返回一个新的变换。因此,在连接之前,需要将视图的transform属性与平移变换进行连接,然后再将结果赋值给视图的transform属性。

关于CATransform3DMakeTranslation函数的详细信息和使用方法,可以参考腾讯云的官方文档:CATransform3DMakeTranslation函数介绍

希望以上信息对您有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Mac OSX 开发入门基础系列之NSTask

Task(图片来自网络) 利用NSTask,我们可以应用中调用外部程序或脚本并获得它的<执行状态和结果 NSTask最为常用的一个场景是为命令行操作提供图形化的界面 1....NSTask默认是异步执行,如果有同步需求,可调用waitUntilExit()方法 2....设置IBOutlet 和IBAction 3.3 实现保存路径选择的方法selectPath @IBAction func selectPath(_ sender: NSButton...系统中 ,沙盒有个规则:App运行期间通过NSOpenPanel用户手动打开的任意位置的文件,把这个这个路径保存下来,后面都是可以直接用这个路径继续访问文件,但当App退出后再次运行,这个路径默认是不可以访问的...小结 NSTask为我们提供了可以一个应用中,调用另一个应用<的可能.其中比较普遍的一个使用场景是我们可以自己的App中,调用强大的Shell命令,或者执行自己写的脚本来实现一些辅助功能 NSPipe

2.2K40
  • macOS AppKit 的事件响应简介

    实例对象有三个组件:事件消息(鼠标,键盘,触控板等产生的),动作消息(action message: 比如NSButton 执行target 的action 方法,就属于一种action消息),和响应链条...我们以最常用的鼠标或键盘操作来说明事件传递到应用的过程.当用户按下鼠标或者键盘时: 1.硬件设备首先检测到用户的这个操作,然后通过驱动程序将这个操作动作转换为操作数据. 2.驱动程序将操作数据准备好之后...是通过调用NSView的hitTest:方法,根据这个方法的返回值(通常是显示最顶层的View)来确定....key Window窗口中的一个(NSButton)按钮时,这个点击动作仅仅是将这个窗口(NSWindow)对象变成key Window而已,你还需要使用鼠标再次点击这个按钮,此时这个按钮才会接收到鼠标点击的事件...的一些类中,比如 NSButton, NSMenu, NSMatrix, 和 NSSavePanel 都提供了默认的响应处理.

    2.7K60

    积木Sketch插件进阶开发指南

    这部分主要介绍如何依靠持久化存储来实现业务切换的功能,就像在第一篇启蒙文档中说的那样,这里不会贴大段的代码,只会帮你梳理最核心的流程,相信你亲自实践一次之后,以后的困难都可以轻松解决。 ? 1....直接采用sketchDOM提供的export方法,将Symbol组件导出为缩略图,之后WebView中显示缩略图,当拖拽缩略图至画板时,再将其替换为Library中对应的Symbol即可。...如果想要自定义一些点击效果,只需NSButton点击事件的回调中设置即可。...Xcode工程配置 通过Xcode工程构建自定义属性面板,最终生成一个可以供JS侧调用的Framework。...'); // 调用暴露的方法 frameworkClass.onSelectionChanged(context); 一起拼积木 目前,积木插件已经美团到家事业部遍地开花,我们希望未来积木品牌产品可以更大范围内得到应用

    1.5K20

    神经病院 Objective-C Runtime 出院第三天——如何正确使用 Runtime

    addObserver方法之后,苹果的做法是执行完addObserver: forKeyPath: options: context: 方法之后,把isa指向到另外一个类去。...如果之后再次使用该对象就会导致程序闪退。所以我们使用OBJC_ASSOCIATION_ASSIGN时,要格外注意。...当调用NSButton的setFrame:方法,会去调用swizzled method,然后会跳入NSView类里面定义的setFrame:方法。...NSControl 和 NSView对应的swizzled method不会被调用NSButton 和 NSControl各自调用各自的 swizzling方法,相互不会影响。...相应的,NSControlNSButton前面,NSButton也会去拉取到NSControl替换后的方法。这样就十分混乱了。但是顺序就是这样排列的。我们开发中如何能保证不出现这种混乱呢?

    1.4K20

    谈谈Swift的extension

    times就是一个方法,可以看出应该是接收一个代码块(本例中为{puts 'hello world'}),然后调用它self(本例中self即为3)次。...譬如我最近在自己的项目中给被点击的UIView(比如button)写了一个小动画,点击了之后组件会上浮一下,并且同时会有一下阴影效果。...animations: { self.backgroundColor = UIColor.whiteColor() self.layer.transform = CATransform3DMakeTranslation...因为我项目中的Button是一个自定义的贪婪Button,只要点击Button的父视图就会响应点击事件,所以是Button的superview调用了animateWhenClicked,这也是我把这个动画扩展到...extension也可用于后期项目维护,可以不修改旧代码的前提下扩展旧代码的功能。

    52320

    深入浅出 Sketch 插件开发

    插件调试 Sketch 插件开发过程,调试是一个必不可少的工作,JavaScriptCore 也有提供类似调试 JavaScript 代码打 log 的方式,我们可以代码中放入: console.log...实际开发的过程中,需要通过调用 Sketch 内部 API 以及 macOS Cocoa frameworks 的能力,来实现更丰富的功能。...比如,开发 Tea Maker 的过程中,我需要在侧边栏中按钮下面添加一行文字,如下图所示: 我们先在文档中搜索 NSButton 这个类,有一个 title 的属性: 点开这个方法,里面有这样一个说明...: vartitle: String { get set } 根据我们上面说到的 JS 调用 Objective-C 的方法,我们 Sketch 调用的时候,可以像下面这样来做: const button...这里还有一点需要注意点是,填充图片的时候,图片的尺寸和用户选择的图片不可能刚好一样,所以还需要设置图片的填充方式,也就是图片自适应形状图层大小来进行缩放,使用 setPatternFillType(1

    1.5K50

    CALayer 图层概念二、CALayer属性二、方法

    .当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView得显示.换句话说,UIView...首先 : CALayer是定义QuartzCore框架中. CGImageRef, CGColorRef两种数据类型是定义CoreGraphics框架中的....UIColor, UIImage是定义UIKit框架中的....view的drawRect: 方法进行绘制 设置view的backgroundColor,调用colorWithPatternImage来进行设置 self.view.backgroundColor =...transform用法一样,也有make和非make方法) @property CATransform3D transform; (1) 平移(当没有3D旋转的时候z值没有效果) CATransform3D CATransform3DMakeTranslation

    1.4K70

    【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

    @end -- 类别名 : 必须是项目中没有的类, 定义类别时使用的类名, 必须是已有的类; -- 圆括号 : 类别名 定义 需要扩展的已有类之后, 必须使用圆括号括起来; -- 定义内容..., 实现部分定义的方法是 私有方法, 不允许被外部调用; -- 调用私有方法一 : 使用 NSObject 的 "performSelector :"执行调用, 也是可以调用私有方法的, 不过此方法会避开语法检查...* button = [[NSButton alloc] initWithFrame:NSMakeRect(120, 40, 80, 30)]; button.title = @"OCTOPUS...- @try 与 @catch 对应关系 : 一个 @try 代码块 可以对应 多个 @catch 代码块;  -- {} 省略问题 : 异常捕获的 @try @catch @finally 的花括号不可省略...: NSException 是 OC 中所有异常的父类; -- 位置永远在最后 : @catch 代码块捕获异常时查看 异常对象类型是否是 捕获的异常类型 或者其子类, 一旦放在开头, 后面的异常永远不可能捕获

    70810

    iOS学习——核心动画之Layer基础

    UIImageView中是UIView的主layer上添加了一个次layer(用来绘制contents),我们设置边框的是主layer,但是次layer在上变,不会有任何的影响,所以当我们调用切割语句的时候...CATransform3DMakeRotation(M_PI, 1, 0, 0); //平移 CATransform3DMakeTranslation(x,y,z) //缩放...明白要怎么选择之前,我们先了解一下UIView和layer的不同点: iOS中看的见,摸得着的都是UIView,例如一个按钮,UITextField,UILable等等,都是UIView UIView...之所以能够显示屏幕上,是试音UIView中有一个图层 创建UIView的时候,系统会自动创建一个CALayer在其中,用于显示东西,可以通过view.layer来去获取图层属性 当UIView要去显示的时候...,先去调用drawRect方法,将要绘制的东西绘制到图层上,然后拷贝图层,完成了UIView的显示 UIView只有交互的功能,没有显示的功能 CALayer只要显示的功能,没有交互的功能 UIView

    1.5K61

    ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!

    这是一个简单的例子: // 当self.username变化时,控制台打印新的名字. // // RACObserve(self, username) 创建一个新的 RACSignal 信号对象,它将会发送...都会打印一条消息. // // RACCommand 创建代表UI事件的signals信号.例如,单个信号都可以代表一个按钮被点击, // 然后会有一些额外的操作与处理. // // -rac_command 是NSButton...return [RACSignal empty]; }]; 或者异步网络请求: // 监听"登陆"按钮,并记录网络请求成功的消息. // 这个block会在来任意开始登陆步骤,执行登陆命令时调用...异步操作上使用signals信号,让通过链接和转换这些signal信号,构建更加复杂的行为成为可能.可以一组操作完成后,来触发此操作即可: // 执行两个网络操作,并在它们都完成后控制台打印信息....; }]; Signals 信号可以被链接以连续执行异步操作,而不再需要嵌套式的block调用.用法类似于: // 用户登录,然后加载缓存信息,然后从服务器获取剩余的消息.在这一切完成后,输入信息到控制台

    1.2K91

    积木Sketch Plugin:设计同学的贴心搭档

    assets目录需要配置skpm.assets下。 常用的命令可以定义scripts中方便直接调用。...Bridge双向通信 常规的插件开发中,UI层一般采用Webview实现,因此你可以使用各种前端开发框架,比如React或者Vue等;而插件的逻辑层(负责调用Skecth API)显然不在WebView...前面的步骤,通过构件菜单栏、创建Webiew完成了交互层的开发;通过Webview的Bridge传递用户操作到插件侧代码,之后调用Sketch API对图层进行操作,这是API层的工作;而根据自身需求并依托交互层与...“授人以鱼不如授人以渔”,相信只要你了解了这些分析技巧,即使之后遇到更多的问题,也可以轻(jia)松(ban)解决。 1....我们就进行了简单的学习,之后的一段时间并没有再去关注这项技术,直到某天插件开发的过程中忽然遇到一个问题:插件WebView显示的情况下,桌面空白处点击使Sketch软件失去焦点,整个App就会被隐藏

    1.2K20

    iOS之深入解析Xcode 13正式版发布的40个新特性

    三、Clang 编译器 为了支持新的 Swift 并发模型,clang 现在可以您多次调用完成处理程序或执行路径没有完成处理程序调用时发出警告; 新的 -fobjc-constant-literals...十二、Instruments Instruments 中的调用树视图和扩展详细信息视图现在用“[inlined]”标记指示内联函数; 通过详细视图导航栏更容易发现不同的视图。...Freeform 模拟度量的 Storyboard 场景现在可以直接在画布中使用调整大小旋钮调整大小; NSButton 斜角类型 macOS 12 中支持斜角颜色; 适用于 macOS 12 的应用程序中...Xcode 现在可以打开 Xcode 本地化目录 (.xcloc) 以查看和编辑字符串和其他本地化资产的翻译; 新的 Use Compiler to Extract Swift Strings 构建设置调用...指定为平台; 当包声明工具版本为 5.5 或更高版本时,macOS 的构建条件不再适用于 Mac Catalyst; Swift Packages 现在支持 DriverKit 作为平台; 当尝试导入本地尚不可用的模块时

    8.7K40

    代码实例详解【可重入锁】和【不可重入锁】区别?

    首先我们要明白锁的概念,多线程的场景下,不同的线程一起运行会导致脏数据,为了保证线程安全,这时候便出现了锁的概念,锁可以对代码块,资源,对象上锁,上锁之后,只允许一个线程对其进行操作,其他线程都会进入阻塞状态...可重入锁可以理解为:同一个线程下,外层方法上锁之后,内层调用的方法也能正常获取锁。 下面先用代码介绍对【不可重入锁】的理解。...当testA()方法获取锁之后,在业务里调用testB(),此时因为A的锁未释放,所以B不能获取到锁,这时候B的业务不能正常进行下去,导致A也不能正常释放锁,A和B方法就发生了死锁。...这就是不可重入锁。 可重入锁是什么呢?...Jdk中带的基本都是可重入锁,下面就用synchronized实例介绍,锁住同一个object之后,控制台打印可以看出,threadA调用threadB方法,B和A方法不会发生死锁,业务都能进行下去。

    59220

    【Android 应用开发】Activity生命周期 与 Activity 之间的通信

    , 但是仍然存在; 2.Activity操作生命周期的方法 onCreate() : 初始化一些成员变量 , 如View等 , 此时进入停止状态; onStart() : 被用户可见之前调用 , 调用之后进入暂停状态..., 如果不满足条件我们不想让用户进入应用 , 可以在这里进行限制 , finish掉该Activity; onResume() : 与用户交互之前调用 , 调用之后进入激活状态; onPause()...: 激活另一个Activity时调用 , 调用之后进入暂停状态 , 界面可见 , 失去焦点; 该操作用来保存当前Activity数据; onStop() : Activity被覆盖前调用 , 调用之后该...Activity不可见; 该方法用来关闭旧的Activity , 注意是完全不可见的时候才会调用这个方法; onDestroy() : Activity被销毁前调用 ; 注意 : 暂停状态 和 停止状态...Activity获取数据 Activity中想要取出跳转之前放入的数据 , 调用Activity的getIntent()方法 , 获取Intent对象 , 调用Intent对象的方法获取数据; ①获取

    44430
    领券