Mac_Os开发第一天

作者: 无沣 | 来源:发表于2017-05-27 17:53 被阅读183次

    Mac_Os新手引导资料下载

    学习Mac开发第一节 认识 NSButton

    NSButton 外观与属性

    打开storyboard 面版,发现NSButton 有很多类型。先在ViewController 拖个PushButton 居中显示看看功能吧

    本人非常推荐可视化编程,所见即所得。大量减少了ui的代码量,维护也非常方便。

    如果你基本弄明白了图上的属性,用代码写起来就非常简单,下面就再用代码创建一个按钮

    //创建按钮

    NSButton *pushButton = [[NSButton alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2-44,self.view.frame.size.height/2 + 30, 88, 88)];

    //按钮样式

    pushButton.bezelStyle = NSRoundedBezelStyle;

    //是否显示背景 默认YES

    pushButton.bordered = YES;

    //按钮的Type

    [pushButton setButtonType:NSButtonTypeMomentaryPushIn];

    //设置图片

    pushButton.image = [NSImage imageNamed:@"close.png"];

    //按钮的标题

    [pushButton setTitle:@"我是按钮"];

    //是否隐藏

    pushButton.hidden = NO;

    //设置按钮的tag

    pushButton.tag = 100;

    //标题居中显示

    pushButton.alignment = NSTextAlignmentCenter;

    //设置背景是否透明

    pushButton.transparent = NO;

    //按钮初始状态

    pushButton.state = NSOffState;

    //按钮是否高亮

    pushButton.highlighted = NO;

    //把当前按钮添加到视图上

    [self.view addSubview:pushButton];

    cooca mac 的坐标是在左下角,跟iOS起始坐标在左上角是有区别!



    效果图

    标题的富文本

    NSMutableAttributedString *nameAttribute = [[NSMutableAttributedString alloc] initWithString:@"花名:胜任"];

    NSRange range = NSMakeRange(0, 3);

    [nameAttribute addAttribute:NSForegroundColorAttributeName

    value:[NSColor redColor]

    range:range];

    [nameAttribute addAttribute:NSFontAttributeName

    value:[NSFont systemFontOfSize:14]

    range:range];

    [nameAttribute fixAttributesInRange:range];

    [pushButton setAttributedTitle:nameAttribute];

    效果图

    NSButton事件响应

    1 拖拽大法:适用于不用传值,用法如图。

    NSButton 的继承关系为 NSObject->NSResponder->NSView->NSControl->NSButton

    2 拖拽大法二:可以传值,用法如图。


    第三步 长按Control键,鼠标长按要push的按钮,拖拽到.m文件生成方法,代码如下

    - (IBAction)pushAction:(id)sender {

    [self performSegueWithIdentifier:@"pushIdentifier" sender:self];

     }

    - (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(nullable id)sender{

    if ([segue.identifier isEqualToString:@"pushIdentifier"]) {

    SecondViewController *second =  (SecondViewController*)segue.destinationController;

    second.addressString = @"请输入";

          }

    }

    NSButton的类型定义在NSButtonCell类中。后续再学习NSButtonCell

    学习Mac开发第二节 通过WebView加载网页

    添加WebKit.framework

    创建WebView对象

    用拖拽大法拖个 myWebView对象

    #import <Cocoa/Cocoa.h>

    #import <WebKit/WebKit.h>

    @interface ViewController : NSViewController

    @property (weak) IBOutlet WebView *myWebView;

    @end

    加载URL路径

    - (void)viewDidLoad {

    [super viewDidLoad];

    NSString *urlString = @"https://www.baidu.com";

    [[self.myWebView  mainFrame ] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];

    }

    加载效果图

    常用方法

    //刷新

    [self.myWebView reload:self];

    //返回上一页

    [self.myWebView goBack:self];

    //返回前一页

    [self.myWebView goForward:self];

    常用Delegate

    //获取每次加载页面的request

    - (void)webView:(WebView *)webView decidePolicyForMIMEType:(NSString *)type        request:(NSURLRequest *)request          frame:(WebFrame *)framedecisionListener:(id)listener{

    NSLog(@"request=======%@",request);

    }

    //获取加载页面的Title

    - (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame{

    NSLog(@"title ===== %@",title);

    }

    //加载完成

    - (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame{

    NSLog(@"~~~~~加载完成~~~~~");

    }

    //加载失败

    - (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame{

    NSLog(@"~~~~~加载失败~~~~~");

    }

    学习Mac开发第三节 通过NSImageView加载图片

    创建NSImageView

    1 . 拖拽大法好 Autolayout 创建一个宽高160 *160 的NSImageView

    创建是正方形的 运行后图片居然没有进行铺满。

    修改下Scaling为None

    运行效果如下

    如何你想代码创建如下:

    NSImageView *imageView = [[NSImageView alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2-80, self.view.frame.size.height/2+80, 160, 160)];

    2.读取资源图片

    拖拽个avatarImageView属性对象

    @property (weak) IBOutlet NSImageView *avatarImageView;

    第一种方法

    //加载本地图片,缓存加载图片

    self.avatarImageView.image = [NSImage imageNamed:@"2.jpg"];

    第二种方法

    //加载本地图片 ,不缓存加载图片,常用大图片显示,

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"jpg"];

    self.avatarImageView.image = [[NSImage alloc]initWithContentsOfFile:filePath];

    第三种方法

    //加载网络图片

    self.avatarImageView.image = [[NSImage alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://img.blog.csdn.net/20161123152252486"]];

    第四种方法 当然也支持大名鼎鼎的SDWebimage库

    //SDWebimage

    [self.avatarImageView sd_setImageWithURL:[NSURL URLWithString:@"http://img.blog.csdn.net/20161123152252486"]];

    3.显示圆形图片

    self.avatarImageView.image = [NSImage imageNamed:@"2.jpg"];

    self.avatarImageView.imageScaling =  NSImageScaleNone;

    self.avatarImageView.wantsLayer = YES;

    self.avatarImageView.layer.masksToBounds = YES;

    self.avatarImageView.layer.cornerRadius = 80.f;

    self.avatarImageView.layer.borderWidth = 3.0;

    self.avatarImageView.layer.borderColor = [[NSColor redColor] CGColor];

    这个貌似跟iOS开发没什么区别 效果如下图

    4.其他属性

    //是否可以编辑

    self.avatarImageView.enabled = YES;

    //对齐方式

    self.avatarImageView.imageAlignment = NSImageAlignCenter;

    //    typedef NS_ENUM(NSUInteger, NSImageAlignment) {

    //        NSImageAlignCenter = 0,

    //        NSImageAlignTop,

    //        NSImageAlignTopLeft,

    //        NSImageAlignTopRight,

    //        NSImageAlignLeft,

    //        NSImageAlignBottom,

    //        NSImageAlignBottomLeft,

    //        NSImageAlignBottomRight,

    //        NSImageAlignRight

    //    };

    相关文章

      网友评论

        本文标题:Mac_Os开发第一天

        本文链接:https://www.haomeiwen.com/subject/fyiqfxtx.html