Mac OS
黄权浩
喜欢各种新技术,欢迎一起讨论。
展开
-
Mac OS 使用Metal渲染NV12、YUV420、CMSampleBufferRef视频
Mac OS 使用Metal渲染NV12、YUV420、CMSampleBufferRef视频原创 2022-08-29 15:19:34 · 1740 阅读 · 0 评论 -
macOS swift下使用贝塞尔曲线制作五子棋盘(2)
上一篇我们实现了绘制棋盘格子以及棋子的功能,这一篇我们来实现黑白子交替落子和判断胜负原创 2022-08-08 10:19:50 · 7908 阅读 · 0 评论 -
macOS swift下使用贝塞尔曲线制作五子棋盘(1)
实现macOS下的五子棋盘。原创 2022-08-05 13:18:05 · 8145 阅读 · 0 评论 -
Safari Web Extension 开发(1)
Safari Web 扩展使用 JavaScript API 和来自 Google Chrome、Mozilla Firefox 和 Microsoft Edge 浏览器扩展的常见文件格式向 Safari 添加自定义功能。这里以macOS的Safari Web Extension为例子。1.在 Xcode 中,选择“文件”>“新建”>“项目”。2.选择macOS,并向下滚动到Application部分,然后选择 Safari Extension App 模板。3.点击下一步。自定义扩展中使用的国际化字原创 2022-07-12 17:08:20 · 8353 阅读 · 0 评论 -
Mac OS Swift UI 如何在Swift UI中灵活的使用NSTextField
输入框a跟随b的内容而变化,输入框b也跟随a的内容变化而变化。创建一个输入框,并绑定一个text内容重写makeNSView重写updateNSView代理绑定加入contentViewEND原创 2022-07-08 16:23:25 · 8259 阅读 · 0 评论 -
Mac OS Swift UI 中使用WKWebView,以及实现代理
首先进行项目配置,支持入网首先为了能在Swift UI中使用WebView,应该对其进行包装实现代理自定义webView观察网页在什么时候需要前进或者后退,这个时候要用ObservableObject来进行包装调试现在,可以将它放到contentView中调试最终效果...原创 2022-07-07 17:29:47 · 9691 阅读 · 0 评论 -
Mac OS Swift UI中的List 和Alert
Swift UI原创 2022-07-07 13:51:58 · 8059 阅读 · 0 评论 -
SwiftUI Bluetooth 使用
SwiftUI Bluetooth原创 2022-07-05 13:53:42 · 8440 阅读 · 0 评论 -
Mac OS Swift UI双栏搜索窗口
import SwiftUIstruct ContentView: View { var body: some View { HStack{ List{ Label("测试",systemImage:"book") Label("测试",systemImage:"book") Label("测试",systemImage:"book") ......原创 2022-03-22 15:44:51 · 263 阅读 · 0 评论 -
Mac OS Swift UI 三栏布局
import SwiftUIvar leftItems = ["left1", "left2", "left3", "left4"]var middleItems1 = ["middle1-1", "middle1-2"]var middleItems2 = ["middle2-1", "middle2-2", "middle3-3"]var middleItems3 = ["middle4-1", "middle4-2", "middle4-3", "middle4-4"]struct ...原创 2022-03-21 14:58:17 · 3470 阅读 · 0 评论 -
Mac OS开发如何让一个窗口显示在另一个全屏应用(专注模式)之上
今天发现NSWindow并没有显示在其他的全屏窗口之上,做以下改动实现了显示在其他全屏窗口的上方。1.不使用 NSWindow,而使用 NSPanel。2.修改 NSWindow.Level 为 modalPanel。window?.level = .modalPanel3.设置 collectionBehavior 为 canJoinAllSpaces 和 fullScreenAuxiliary。window?.collectionBehavior = [.canJoinAllSp原创 2022-03-15 12:37:02 · 9853 阅读 · 0 评论 -
Mac OS 如何让其他应用窗口活跃并置前
let options = CGWindowListOption(arrayLiteral: CGWindowListOption.excludeDesktopElements, CGWindowListOption.optionOnScreenOnly) let windowListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0)) guard let infoList = windowListInfo as NSA...原创 2022-02-21 16:59:51 · 8980 阅读 · 0 评论 -
Mac OS窗口进入其他spaces
记录一下, 又忘了。window.collectionBehavior = .canJoinAllSpaces原创 2021-12-28 10:50:08 · 196 阅读 · 0 评论 -
Mac OS 报错 You must first sign the relevant contracts online. (1048)
[2021-06-22 19:20:45 CST] <main> DBG-X: Apple's web service operation return value:[2021-06-22 19:20:45 CST] <main> DBG-X: parameter Errors = [You must first sign the relevant contracts online. (1048)][2021-06-22 19:20:45 CST] <main>.原创 2021-06-23 10:23:07 · 677 阅读 · 1 评论 -
Mac OS 模态窗口
let userWindow = UserWindow(windowNibName: "UserWindow")NSApp.runModal(for: userWindow.window!)记得在窗口关闭的时候取消模态func windowWillClose(_ notification: Notification) { NSApp.stopModal()}原创 2020-12-30 10:21:04 · 747 阅读 · 0 评论 -
Mac OS 用NSView做出按钮效果
class CustomViewButton: NibView { var trackingArea: NSTrackingArea? var select = false var normalImg: NSImage? var selectImg: NSImage? var normalColor = NSColor.white var selectColor = Color.themeColor ...原创 2020-12-28 14:44:37 · 277 阅读 · 0 评论 -
Mac OS 只允许NSTextField输入数字
好久没写文章了,随便凑一个//重写NSTextField的NumberFormatterclass OnlyIntegerValueFormatter: NumberFormatter { override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer<NSString?>?, errorDescri原创 2020-12-24 13:49:58 · 585 阅读 · 0 评论 -
Mac OS 如何让窗口显示在最前边,(用于录制屏幕提醒,以及屏幕分享,应用分享的UI窗口解决)
效果如下源码下载链接原创 2020-07-24 10:29:06 · 8969 阅读 · 2 评论 -
Mac OS 开发 NSTextView 第一响应者模式
最开始以为跟TextField一样直接becomeFirstResponder就可以了。后来发现不行,试了下以下方法可以,先记录下来NSTextView需要在NSWindow那里直接设置为第一响应者[[selfwindow] makeFirstResponder:NSTextView];...原创 2019-12-23 13:49:12 · 4779 阅读 · 0 评论 -
Mac OS 贝塞尔曲线画气泡
- (void)drawRect:(NSRect)dirtyRect { [super drawRect:dirtyRect]; NSBezierPath* bezier = [NSBezierPath bezierPath]; //bezier = [self makeRectPath:bezier withRect:NSMakeRect(50, 50, 200, ...原创 2019-12-20 16:28:59 · 4758 阅读 · 0 评论 -
Mac OS 开发 NSTextViewNSTextField回车shift回车区分(oc)(swift)
判断NSTextView和NSTextField的回车跟shift回车事件OC代码#pragma mark - NSTextFieldDelegate- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector{ if ([N...原创 2019-12-20 11:27:34 · 4821 阅读 · 1 评论 -
Mac OS 开发 NSTextView实现placeholderString功能
NSTextView并没有像TextField一样暴露placeholderString。但是我们可以子类化一个来实现功能。//// TextViewWithPlaceHolder.m// easyVideo//// Created by quanhao huang on 2019/12/19.// Copyright © 2019 easyVideo. All rights ...原创 2019-12-19 15:19:40 · 5009 阅读 · 0 评论 -
Mac OS NSWindow当用户调整窗口大小的时候,保持长宽比
-(NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize{ frameSize.width = frameSize.height*2; return frameSize;}原创 2019-01-15 17:46:38 · 9537 阅读 · 2 评论 -
Mac OS 高度自定义NSButton
NSButton 并没有UIButton那么方便的修改它的属性。想要实现UIButton的样式,自定义一个是最好的。#import <Cocoa/Cocoa.h>typedef NS_ENUM(NSUInteger, SWSTAnswerButtonState) { SWSTAnswerButtonNormalState = 0, SWSTAnswe...原创 2018-09-05 15:33:38 · 5365 阅读 · 0 评论 -
Mac OS 悬浮窗口,并且可以保持在全屏的其他应用上。
最简单的一个方法NSPanel#import <Cocoa/Cocoa.h>NS_ASSUME_NONNULL_BEGIN@interface myWindow : NSPanel@endNS_ASSUME_NONNULL_END#import "myWindow.h"@implementation myWindow- (instancetype)i...原创 2019-05-28 14:26:56 · 18440 阅读 · 14 评论 -
Mac OS 截图当前显示器跟外置显示器并转换为NSImage
- (NSMutableArray *)getscreenCapture{ NSMutableArray *datas = [NSMutableArray array]; //存储所有显示器显示id CGDirectDisplayID dspyIDArray[10]; uint32_t dspyIDCount = 0; //获取当前活跃的所有显示器id及...原创 2019-05-17 16:32:17 · 1142 阅读 · 0 评论 -
Mac OS 让NSWindow移动到另一个屏幕并始终保持在活动space窗口前
最近一个Mac项目要做到用户共享桌面UI需要在桌面最前端展示一个蓝色的边框,需要做到用户分享哪个显示器蓝框到哪个显示屏上边,踩了一点雷,所以记录下来。结果如下图因为我接了一个显示器所以 我直接写死了获取ID点击按钮1分享第一个屏幕 点击按钮2分享第二个屏幕localControl.window 的window等级需要设置一下(子类化一个NSWindow)[self set...原创 2019-05-13 13:43:11 · 2422 阅读 · 5 评论 -
Mac OS 点击dock应用图标重新弹出主窗口
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag{ if (!flag){ [NSApp activateIgnoringOtherApps:NO]; [self.window ma...原创 2018-09-26 11:21:02 · 7016 阅读 · 2 评论 -
Mac OS 截取NSView 内容作为NSImage
[NSImage lockFocus]; NSImage *image = [[NSImage alloc] initWithData:[imageBg dataWithPDFInsideRect:CGRectMake(0, 0, 200, 200)]]; [NSImage unlockFocus]; [image lockFocus]; ...原创 2018-09-25 15:03:20 · 4872 阅读 · 0 评论 -
Mac OS NSView 加载gif图
#import <Cocoa/Cocoa.h>@interface GifView : NSView- (void)setImage:(NSImage*)image;- (void)setImageURL:(NSString*)url;@end#import "GifView.h"@interface GifView()@property (nonatomi...原创 2018-09-06 15:36:17 · 4683 阅读 · 0 评论 -
Mac OS 调用浏览器打开网页
Mac OS 稍微有些不同。是这样调用网页的[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@""]];原创 2018-09-06 14:32:49 · 6206 阅读 · 0 评论 -
Mac OS NSTextFiled 居中
#import <Cocoa/Cocoa.h>@interface TextFiledCellCenter : NSTextFieldCell@property (nonatomic) IBInspectable CGFloat oringeY;@end#import "TextFiledCellCenter.h"@implementation TextFiled...原创 2018-09-03 16:44:05 · 793 阅读 · 0 评论 -
Mac OS 重写窗口全屏方法
1.铺满屏幕 [self.view.window zoom:self];2.系统原有的全屏[self.view.window toggleFullScreen:self];注意第二种方法需要设置当前window self.window.collectionBehavior = NSWindowCollectionBehaviorFullScreenPrimary;才能生效。...原创 2018-09-11 14:05:16 · 6115 阅读 · 0 评论 -
Mac OS NSViewController获取-(void)keyDown:(NSEvent*)event事件
要想NSViewController获取-(void)keyDown:(NSEvent*)event事件 得在viewController里加上[NSEvent addLocalMonitorForEventsMatchingMask:NSEventMaskKeyDown handler:^NSEvent * _Nullable(NSEvent * _Nonnull aEvent) { [...原创 2018-09-04 15:30:51 · 5530 阅读 · 0 评论 -
Mac OS 获取当前工程路径
-(NSString *) get_current_app_path{ NSString* path = @""; NSString* str_app_full_file_name = [[NSBundle mainBundle] bundlePath]; NSRange range = [str_app_full_file_name r...原创 2018-09-04 10:13:08 · 6682 阅读 · 0 评论 -
Mac OS 获取所有的摄像头麦克风设备
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio];需要勾选原创 2018-08-28 14:28:09 · 3762 阅读 · 0 评论 -
NSImageView的图片正确的满屏放大缩小而没有黑边
NSImageView的时候,如果图片比View的边框小,图片会被放大以适应边框的大小。但是如果图片宽高比和View的宽高比不一致时,图片是不会填满整个View的,这个时候就会有黑边出现(不一定是黑色,根据View的背景色而定)。在iOS里可以选择UIViewContentModeScaleAspectFill来填满整个View,但是在Cocoa中是没有这个选项的。所以我们应该调整图像大小以适...原创 2018-08-28 14:06:43 · 7064 阅读 · 1 评论 -
Mac OS 不能接收- (void)keyDown:(NSEvent *)event事件
加入这句话[NSEvent addLocalMonitorForEventsMatchingMask:NSEventMaskKeyDown handler:^NSEvent * _Nullable(NSEvent * _Nonnull aEvent) { [self keyDown:aEvent]; return aEvent; }]; ...原创 2018-10-09 11:08:05 · 5860 阅读 · 2 评论 -
Mac OS NSTextField不支持拷贝粘贴操作
为NStextField 写一个扩展- (BOOL)performKeyEquivalent:(NSEvent *)event{ if (([event modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask) { // The command key is the...原创 2018-10-22 15:20:43 · 4910 阅读 · 0 评论 -
Mac OS 虚拟键盘的一些问题。(CGKeyCode)
最近有一个需求,做一个虚拟键盘,用户点击虚拟键盘来代替键盘输入,一想挺简单的,大概一个实现思路就是模拟键盘来发送CGKeyCode 大致思路就是#include <Carbon/Carbon.h>#include <ApplicationServices/ApplicationServices.h>CGEventRef key = CGEventCreateKe...原创 2019-04-17 17:10:37 · 2106 阅读 · 1 评论