MacOS 开发
来源:互联网 发布:数据漏斗 excel 编辑:程序博客网 时间:2024/06/03 19:18
关键词:MacOS 开发、NSImageView、gif、imageScaling、canDrawSubviewsIntoLayer、setAnimates、imageFrameStyle
- 定义
- 创建和基本使用
- 展示 gif 动图
- 很6的属性setEditable
- 背景色 和 imageFrameStyle 的冲突
- 添加圆角
- 给NSImageView增加 backgroundColor 属性
- 系统图片
- 参考资料
定义
NSImageView对象可以将NSImage对象的图片数据显示在一个矩形里。一个可以编辑的NSImageView的对象的使用方法 和 NSImage对象一样,支持复制、粘贴、拖拽、删除等操作。还有一点,必须是在可编辑的、有图片内容的状态下,NSImageView对象才能执行这些操作。
创建和基本使用
- (void)addImgView{ NSImageView *imgView = [[NSImageView alloc]init]; imgView.frame = NSMakeRect(100, 100, 250, 200); imgView.imageFrameStyle = NSImageFramePhoto; //图片边框的样式 imgView.wantsLayer = YES; imgView.layer.backgroundColor = [NSColor cyanColor].CGColor;// NSImage *computerimage = [NSImage imageNamed:NSImageNamePathTemplate];// // imgView.image = computerimage; imgView.image = [NSImage imageNamed:@"swift"]; imgView.imageScaling = NSImageScaleNone; [imgView setAnimates:YES]; imgView.imageAlignment = NSImageAlignTopRight; //图片内容对于控件的位置 [imgView setEditable:YES]; //用户能否直接将图片拖到一个NSImageView类里,666 [imgView setAllowsCutCopyPaste:YES];//表示用户能否对图片内容进行剪切、复制、粘贴行操作 [self.window.contentView addSubview:imgView];}
展示 .gif 动图
网上一般都说,设置 imgView.animates = YES;
即可,其实还需要设置 imgView.canDrawSubviewsIntoLayer = YES;
。
- (void)addGif{ NSImageView *imgView = [[NSImageView alloc]initWithFrame:NSMakeRect(100, 100, 100, 100)]; [self.window.contentView addSubview:imgView]; NSImage *img1 = [NSImage imageNamed:@"songListWave.gif"]; imgView.imageScaling = NSImageScaleNone; imgView.animates = YES; imgView.image = img1; imgView.canDrawSubviewsIntoLayer = YES;}
很6的属性:setEditable
= yes 的时候,直接将图片拖到一个NSImageView 控件里,图片就可以变成这个拖拽的图,效果如下:
这个属性在 iOS 上是没有的。
问题:拖拽时相应的代理相应方法?
背景色 和 imageFrameStyle 的冲突
如果同时设置了背景色(有效),但后面设置了imageFrameStyle 的话,背景色就没效果了,无论代码先后。
imgView.imageFrameStyle = NSImageFramePhoto; //图片边框的样式 imgView.wantsLayer = YES; imgView.layer.backgroundColor = [NSColor cyanColor].CGColor;
添加圆角
imgBg.wantsLayer = YES;imgBg.layer.cornerRadius = 100;
给NSImageView增加 backgroundColor 属性
创建新的 ImageView 继承自 NSImageView,添加 NSColor *backgroundColor
属性;
具体步骤可参考:
http://www.jianshu.com/p/9cceffcac235
核心代码:
.m中的代码 - (void)setBackgroundColor:(NSColor *)backgroundColor { _backgroundColor = backgroundColor; [self setNeedsDisplay:YES]; } - (void)drawRect:(NSRect)dirtyRect { [super drawRect:dirtyRect]; // 这个地方必须要判断,否则会被填充为黑色 if (_backgroundColor) { NSRect rect = self.frame; [_backgroundColor set]; [NSBezierPath fillRect:rect]; } // Drawing code here. }
系统图片
macOS 可以直接调用系统图标,如: NSImage *computerimage = [NSImage imageNamed:NSImageNamePathTemplate];
系统图标有100多个,我把名字取出来用 collectinView 做了个 demo,大家可以根据名字取用图片。效果显示如下:
具体可见:http://blog.csdn.net/lovechris00/article/details/77994908
参考资料
江蒙尘 : http://www.jianshu.com/p/0fa6fc713d30
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- android闹钟-极客学院
- 关于cocosjs中html5加载到应用中背景透明的设置
- 安卓集成第三方--使用ShareSdk实现登录和分享
- 【PAT 1006Cars on Campus (30)】
- SerializeField
- MacOS 开发
- iOS In-App Purchase 内购之问题总结
- 去除一段文字前面的数字的一段函数
- springboot admin 监控hystrix
- (转载)多线程编程学习二(对象及变量的并发访问)
- java菜鸟---------求100以内的完美立方
- 面试总结
- 短网址访问重定向到长网址时笔记
- 【安卓笔记】touch事件的分发和消费机制