zoukankan      html  css  js  c++  java
  • oc之学习Mac开发之NSButton

    https://blog.csdn.net/lengshengren/article/details/53887873

    2016年12月26日 17:32:19

    NSButton 外观与属性

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

     image

    本人非常推荐可视化编程,所见即所得。大量减少了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];
    效果如下图

    image

    标题的富文本

    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];
    效果如下 

    image

    NSButton事件响应

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

    image

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

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

    第一步 

    image

    第二步 点击连接器,指定唯一标识符。 

    image

    第三步 长按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

    --------------------- 

    原文:https://blog.csdn.net/lengshengren/article/details/53887873 

    版权声明:本文为博主原创文章,转载请附上博文链接!

    Mac app 开发之-NSButton使用

    2018.12.24 15:04* 字数 

    按钮 NSButton是NSControl的子类,是最常用的控件之一。
    NSButton的继承关系是:NSButton -> NSControl -> NSView -> NSResponder -> NSObject,是一个很长的继承链了。
    虽然都是Button,但是Mac系统是没有触摸事件的。所以和iOS中的UIButton差别很大.
    1.UIButton 事件类型很多, 而NSButton没有设置事件类型的方法
    2.UIButton 样式单一, 而NSButton可以选择很多样式(radiobutton,checkbutton等..)

    简单使用

    let btn = NSButton(frame: CGRect(x: 200, y: 20, 100, height: 40))

            btn.title = "点击"  //标题

            btn.alignment = NSTextAlignment.center //按钮上文字的对齐方式

            btn.font = NSFont(name: "Marker Felt", size: 16) // 字体

            btn.setButtonType(NSButton.ButtonType.onOff) //按钮功能样式: raido, 开关 等等

            btn.bezelStyle = NSButton.BezelStyle.roundRect //按钮的边框样式

            

            /** ButtonType.toggle 时 */

            btn.alternateTitle = "开启"  //设置开启时文字

            btn.alternateImage = NSImage(named: "abc")//设置开启时图片

            

            

            btn.isBordered = false     //是否显示边框

            btn.isTransparent = false  // 是否透明

            btn.isHighlighted = true   //按钮是否高亮

            

            /** 按钮快捷键 */

            btn.keyEquivalent = "I"  //设置快捷键

            btn.keyEquivalentModifierMask = NSEvent.ModifierFlags.shift //设置快捷键掩码

    //        btn.attributedTitle = attibuteTitle //设置富文本标题

            

            //给按钮添加事件

            btn.target = self

            btn.action = #selector(buttonClicked)

            

            view.addSubview(btn)

            

            //在OSX 10.12 后 NSButton 可以通过一些 convenience init 方法创建

            button = NSButton(title: "确定", target: self, action: #selector(buttonClicked))

            button.frame = CGRect(x: 20, y: 20, 100, height: 40)

            view.addSubview(button)

    NSButton 有多种ButtonType, BezelStyle这里也不详细说明,实践出真知。

    NSButtonCell

    NSButtonCell的继承关系是:NSButtonCell -> NSCell -> NSObject
    比NSButton少了两层的继承,所以Cell的性能比Control高很多了。

    Cell 和 Control

    NSCell 是作为UI层展示.
    NSButton和NSButtonCell同时存在,设置NSButton的属性,也就是设置NSButtonCell的属性(某些)。

  • 相关阅读:
    《火影忍者:究级风暴》渲染技术究极解析!
    动态数组和内置数组转换范例
    固定视角
    旋转
    时间间隔操作
    编辑器的一些批处理脚本
    访问GUItexture
    血槽制作
    动画循环播放
    软件测试修炼之道之——重现问题(上)
  • 原文地址:https://www.cnblogs.com/sundaymac/p/10333512.html
Copyright © 2011-2022 走看看