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

尽管存在NeedsDisplay,但未调用Xamarin.Mac NSView DrawRect

Xamarin.Mac是一种跨平台的移动应用开发框架,它允许开发者使用C#语言和.NET框架来构建macOS平台上的应用程序。在Xamarin.Mac中,NSView是macOS平台上视图组件的基类,而DrawRect是NSView类中的一个方法,用于绘制视图的内容。

在给定的问题中,提到了一个名为NeedsDisplay的属性,该属性是NSView类的一个属性,用于标记视图是否需要重新绘制。当该属性被设置为true时,视图会调用DrawRect方法重新绘制自身的内容。而在给定的代码中,尽管存在NeedsDisplay属性,但是未调用NSView的DrawRect方法。

要解决这个问题,可以按照以下步骤进行操作:

  1. 确保视图的NeedsDisplay属性被正确设置为true,以指示视图需要重新绘制。
  2. 在视图的代码中找到一个合适的位置来调用视图的SetNeedsDisplay方法,该方法会标记视图为需要重新绘制。
  3. 在视图的代码中实现DrawRect方法,该方法负责绘制视图的内容。你可以在DrawRect方法中使用各种绘图API来绘制自定义的视图内容。

需要注意的是,Xamarin.Mac中的NSView和DrawRect方法与macOS平台上的Cocoa框架中的NSView和drawRect方法具有类似的概念和作用。在实际应用开发中,可以根据具体需求和情况来使用这些方法,并结合其他相关的Xamarin.Mac类和API来实现视图的绘制和显示。

推荐的腾讯云相关产品和产品介绍链接地址:腾讯云提供了丰富的云计算服务和解决方案,包括云服务器、云数据库、云存储等。你可以访问腾讯云官网了解更多相关信息:https://cloud.tencent.com/product

请注意,上述答案仅供参考,具体解决方案可能因实际需求和情况而异。

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

相关·内容

iOS动画-CALayer基础知识

这似乎很酷,但惊喜之余,我们也发现了仍然存在的小缺憾,那就是此时的图片显示效果是变形的;那它是否也可以像UIImageView一样具有可设置的方法呢,答案是肯定的,我们可以使用如下的代码,将图片自适应显示...-drawRect:方法是UIView没有默认实现的方法,因为寄宿图并不是必须的;但如果UIView检测到此方法被实现了,此方法会被自动调用,然后我们就可以在其中使用Core Graphics绘制自己需要的内容了...,并结合定时器调用-setNeedsDisplay方法,就可以实现环形动画的效果(这里就不做具体演示了); 四、CALyer方法绘制自定义寄宿图 虽然-drawRect:方法是实现了自定义寄宿图绘制,但事实上还是底层的...主动绘制 我们需要显式的调用-display方法;这不同于UIView,当图层显示到屏幕上时,CALayer不会自动重绘它的内容,CALayer把重绘的决定权交给了开发者; 2.绘制特点 尽管没有使用...通常的做法还是实现UIView的-drawRect:方法,这样UIView就会自动帮我们做完剩下的工作,包括需要重绘的时候调用-display方法; 五、Frame与Bounds的区别 我们已经知道UIView

1.9K50
  • iOS 渲染原理解析

    也正因为每次要被渲染的内容是被静态的存储起来的,所以每次渲染时,Core Animation 会触发调用 drawRect: 方法,使用存储好的 bitmap 进行新一轮的展示。...与此同时,两个系统还可以根据交互规则的不同来进一步封装统一的控件,比如 iOS 有 UIKit 和 UIView,OS X 则是AppKit 和 NSView。 4....如果重写了 drawRect: 方法,那么会调用重载的 drawRect: 方法,在 drawRect: 方法中手动绘制得到 bitmap 数据,从而自定义视图的绘制。...但是如果重写了 drawRect: 方法,这个方法会直接调用 Core Graphics 绘制方法得到 bitmap 数据,同时系统会额外申请一块内存,用于暂存绘制好的 bitmap。...重写 drawRect 方法会触发离屏渲染吗?

    2.1K50

    iOS性能优化系列篇之“列表流畅度优化”

    如启动时、viewDidLoad、runloop空闲时等等 * 加载内容:缓存在磁盘的网络数据、图片、其他滑动时需要的耗时的资源 * 注意事项:在预加载带来的滑动性能提升和内存占用增加之间权衡...多线程 为什么要多线程: * UIKit 大部分API只能在主线程调用, 特别是一些耗时的操作,如view的创建,布局和渲染默认都是在主线程上完成 * 主线程任务过多,16.67ms内无法完成,...尽管这两个方法性能不错,但仍旧需要放到后台线程进行以避免阻塞主线程。...* 其他 下面详细讲下drawRect优化和图片优化 drawRect优化 * 首选使用CAShapeLayer替代drawRect,在大多数场景下,都可以使用CAShapeLayer替代drawRect...当在较短时间显示大量图片时(比如 TableView 存在非常多的图片并且快速滑动时),CPU 占用率很低,GPU 占用非常高,界面仍然会掉帧。

    2.5K30

    汇编寄存器的规则

    尽管这是一种很好的格式,但在眼睛上可能会有些困难。 在下一章中,您将把汇编格式更改为 Intel,并且从那以后将完全使用 Intel 汇编语法。...由于您已经断点了 viewDidLoad,因此可以放心地假设 NSView 实例已加载。 感兴趣的方法是 mouseUp:由 NSView 的父类 NSResponder 实现的选择器。...有时使用寄存器和断点很有用,以便获得内存中还存在的对象的引用。例如,如果您想将前部 NSWindow 更改为红色,但是在代码中没有对该视图的引用,又不想重新编译任何代码怎么办?...注:尽管 NSResponder 实现了 mouseDown: 方法,但 NSWindow 重写了它。...从下往上扫带出控制中心,观察改变的地方: 尽管这似乎是一个很酷的花招编程技巧,但它却展示了通过有限的汇编和寄存器的知识能够在程序内产生你之前没见过的大的变化。

    2.5K50

    JavaScript之闭包问题以及立即执行函数

    ---- 函数表达式 var fnName = function (){…}; 使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式...---- 匿名函数:function () {}; 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数...这证明了,函数f1中的局部变量n一直保存在内存中,并没有在f1调用后被自动清除。 为什么会这样呢?...原因就在于f1是f2的父函数,而f2被赋给了一个全局变量,这导致f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制(garbage collection)...,在循环执行结束以后,尽管最后i的值变成了a元素总数(例如10) // 但闭包内部的lockedInIndex值是没有改变,因为他已经执行完毕了 // 所以当点击连接的时候,结果是正确的 var elems

    94220

    MIT_6.s081_Lab8:Xv6 and Lock

    对于每个锁,acquire 维护对该锁的调用计数,以及获取中的循环尝试但未能设置锁的次数。...kalloctest 调用一个系统调用,使内核打印 kmem 和 bcache 锁(这是本实验的重点)和 5 个最争用次数最多锁的计数。如果存在锁争用,获取循环迭代的次数将会很大。...系统调用返回 kmem 和 bcache 锁的循环迭代次数的总和。 对于本实验,您必须使用具有多核的专用机器。如果您使用一台正在做其他事情的机器,那么 kalloctest 打印的计数将是无稽之谈。...也就是说,您应该为每个锁调用 initlock,并传递一个以“kmem”开头的名称。 运行 kalloctest 以查看您的实现是否减少了锁争用。...您的输出将类似于下图所示,kmem 锁的争用总量大大减少,尽管具体数字会有所不同。 确保 usertests 中的所有测试都通过。 make Grade 应该说 kalloctests 通过了。

    31810

    大前端时代的乱流:带你了解最全面的 Flutter Web

    Web 平台,这就和 Weex 一样,贴近平台也就是耦合于平台,事实上 DomCanvas 实现理念其实和 Flutter 并不贴切,也导致了 Flutter Web 的一些渲染效果在 html 模式下存在兼容问题...生成对应的分析图: 这里只展示能够被 mapped 的部分,可以看到 700k 几乎就是 Flutter Web 整个 framewok + engine + vm 的大小,而这部分内容其实可以优化的空间并不大,尽管会有一些如...canvas 渲染,如果场景需要再使用标签来实现绘制; 2、在 web sdk 里 hasArbitraryPaint 参数默认是 false ,但是在需要执行以下这些行为时就会被设置为 true ,而这些调用上可以看出...回到前面的文本问题上,「在 Flutter 的文本绘制一般都是通过 drawParagraph 实现,所以理论上只要有文本存在,就会进入到 BitmapCanvas 的绘制流程」,那么目前看来这个结论符合上面...因为复杂矩阵变换 canvas 支持并不好; _childOverdraw 经常和 _canvasPool.isEmpty 一起达成条件,一般有 picture 上有 _drawElement 之后就会调用

    1.8K40

    iOS 页面渲染 - UIView & CALayer

    CALayer 和 UIView 其实不属于同一个框架,CALayer 所属的 QuartzCore 框架是可以跨平台使用的,在 iOS 以及 macOS 中都可以使用,但是 UIKit 只在 iOS 中存在...尽管两种情况中都有 layer,但是当 layer 附加在 view 上时,它的默认的隐式动画的 layer 行为就不起作用了,那不显示动画的原因是什么呢?...} CALayer渲染流程 上图是 CALayer 在渲染之前的流程,我们可以稍微进行归纳一下: 当调用 [UIView setNeedsDisplay] 时,实际上会直接调用底层 layer 的同名方法...如果有 delegate,则会执行 [layer.delegate drawLayer:inContext],然后在这个方法中会调用 view 的 drawRect: 方法,也就是我们重写 view 的...drawRect: 方法才会被调用到; 如果没有 delegate,会调用 layer 的 drawInContext 方法,也就是我们可以重写的 layer 的该方法,此刻会被调用到; 注意 drawRect

    1.8K20

    JavaScript基础知识强化:变量提升、作用域逻辑及TDZ的全面解析

    在这个区域内,变量已声明但未初始化,任何访问尝试都会导致ReferenceError,确保了变量在使用前已被正确定义和初始化,提高了代码的健壮性。...提升行为:存在暂时性死区(Temporal Dead Zone, TDZ),变量在声明之前无法访问,避免了变量声明前的不确定状态。 let:允许重新赋值。 const:声明常量,一旦赋值后不可更改。...函数声明与函数表达式: 函数声明:整个函数(包括名称和函数体)被提升,可以在声明之前调用。...当innerFunction后来被调用时,它仍然能够访问到outerVariable和secret,尽管这些变量在其定义之外,甚至outerFunction已经执行完毕。...作用域界定了变量存在的上下文环境,确定了变量的生命周期与可访问范围。从全局作用域到函数作用域,再到let和const引入的块级作用域,每个层次都精细控制着变量的可见性。

    16610

    垃圾熊猫喜欢企业Java代码

    现代 IDE 可以通过可达性分析检测未使用的死代码,但对于不是 100% 私有的类和方法存在健全性问题。如果代码具有公共访问修饰符,那么它可以加载,因此你的工具永远不会报告它。...尽管删除未使用的死代码会使测试变红,但开发人员还可以删除此测试并通过不再运行它来加快整体构建管道。全面了解哪些代码可以被丢弃的最佳方法是分别监控测试和生产环境,看看会发生什么。...代码是否在生产中使用的问题取决于该方法是否被调用(或内联)。...如果再次使用该方法,则无需影响记录第一次调用的性能。该方法已在生产中使用,因此代码不是未使用的或死的。在此场景中,JVM 运行被标记为“应用程序环境”,以帮助记录哪个应用程序为给定环境调用了该方法。...代码清单的监控从正在运行的 JVM 中进行,以识别存在但未运行的整个类或公共方法。它是一个混乱查找器——一种浣熊驱虫剂。

    8910

    程序出错你让它返回啥?

    当我读到上面这句话时我想到了编程,编程也是一门艺术,如果你在编程时能够看到良质(良质是一种境界,我肤浅的理解为如何更好的协调用户和机器资源发挥最大效率),能感觉到机器细微的反馈,那么你就是一个懂得关心的人...为什么我还要使用 Java,一是因为 Java 是真正的跨平台,内网环境都 aix、linux 都已经有 Java 环境,但未必有 Python3。...我个人觉得,尽管返回 NULL 值有诸多弊端,但对于以 get、find、select、search、query 等单词开头的查找函数来说,数据不存在,并非一种异常情况,这是一种正常行为。...你只需要在函数定义的地方注释清楚,让调用者清晰地知道数据不存在的时候会返回什么就可以了。...异常可以携带更多的错误信息,比如函数调用栈信息。除此之外,异常可以将正常逻辑和异常逻辑的处理分离开来,这样代码的可读性就会更好。

    50020

    嫌学校App太“烂”,极客父母做了开源版本,却遭官方报警?

    不过令许多家长感到愤怒的是,尽管该系统花费高昂,但未能达到其最初设计的目标。很多家长和老师都抱怨Skolplattform实际使用效果并不好,抱怨该系统不仅复杂性,还非常卡顿。...据了解,在2020年瑞典数据监管机构就发现Skolplattform存在严重的安全漏洞,对其处以400万瑞典克朗(约合人民币近300万)的高额罚款。...然后该团队打开Chrome开发者工具,登录Skolplattform,并记下其中所有URL和有效负载,获取了调用平台私有API的代码并构建了应用包,以便该程序可以在手机上运行。...来源于网络 03 官方封锁打压 尽管Landgren开发程序出发点是善意的,但是Landgren等人行为并不被官方认可。...直到今年4月份,斯德哥尔摩市宣布将让警方介入,警方声称该应用程序及其联合创始人可能存在泄露数据等违法犯罪行为,还要求调查人员审查该应用程序的工作原理。

    36220

    JavaScript大略

    Undefined 数据类型:指变量被创建后,但未给该变量赋值以前所具有的值。   Null 数据类型:null 值就是没有任何值,什么也不表示。   object类型。   ...javascript是一种对数据类型变量要求不太严格的语言,所以不必声明每一个变量的类型,变量声明尽管不是必须的,但在使用变量之前先进行声明是一种好的习惯。...与页面对象的调用:         页面对象中的事件处理,可以是onclick="return onsub()",注意函数名不能是一些关键字。返回的boolean值决定了是否执行动作。...调试/错误处理:         当某个语句有错时,没有明显的反应,但是会导致一些确定无疑的语句无法执行,由此可以推断前面有存在问题的语句。可以考虑用alert或者confirm跟踪。

    681100

    嫌学校 App 太“烂”,极客父母做了开源版本,却遭官方报警?

    不过令许多家长感到愤怒的是,尽管该系统花费高昂,但未能达到其最初设计的目标。很多家长和老师都抱怨Skolplattform实际使用效果并不好,抱怨该系统不仅复杂性,还非常卡顿。...据了解,在2020年瑞典数据监管机构就发现Skolplattform存在严重的安全漏洞,对其处以400万瑞典克朗(约合人民币近300万)的高额罚款。...然后该团队打开Chrome开发者工具,登录Skolplattform,并记下其中所有URL和有效负载,获取了调用平台私有API的代码并构建了应用包,以便该程序可以在手机上运行。...来源于网络 官方封锁打压 尽管Landgren开发程序出发点是善意的,但是Landgren等人行为并不被官方认可。...直到今年4月份,斯德哥尔摩市宣布将让警方介入,警方声称该应用程序及其联合创始人可能存在泄露数据等违法犯罪行为,还要求调查人员审查该应用程序的工作原理。

    17410

    你不知道的Mac屏幕显示图像

    这里特别说一下 CALayer:CALayer 内部并没有属性,当调用属性方法时,它内部是通过运行时 resolveInstanceMethod 为对象临时添加一个方法,并把对应属性值保存到内部的一个...当视图层次调整时,UIView、CALayer 之间会出现很多方法调用与通知,所以在优化性能时,应该尽量避免调整视图层次、添加和移除视图。...尽管这两个方法性能不错,但仍旧需要放到后台线程进行以避免阻塞主线程。...这个最常见的地方就是 [UIView drawRect:] 里面了。由于 CoreGraphic 方法通常都是线程安全的,所以图像的绘制可以很容易的放到后台线程进行。...当在较短时间显示大量图片时(比如 TableView 存在非常多的图片并且快速滑动时),CPU 占用率很低,GPU 占用非常高,界面仍然会掉帧。

    2K70
    领券