美文网首页watchOS 开发
一、iWatch常用控件基本用法

一、iWatch常用控件基本用法

作者: Dosun | 来源:发表于2017-03-07 14:00 被阅读1675次

    本篇将讲述,WKInterfaceLabel、WKInterfaceImage,常见控件的属性和方法。

    1.WKInterfaceLabel

    WKInterfaceLabel是继承于WKInterfaceObject,而WKInterfaceObject是继承于NSObject.

    //初始化
    - (instancetype)init;
    //设置是否隐藏
    - (void)setHidden:(BOOL)hidden;
    
    //设置透明度
    - (void)setAlpha:(CGFloat)alpha;
    - (void)setSemanticContentAttribute:(WKInterfaceSemanticContentAttribute)semanticContentAttribute ;
    
    //设置水平对齐
    - (void)setHorizontalAlignment:(WKInterfaceObjectHorizontalAlignment)horizontalAlignment ;
    
    //设置垂直对齐
    - (void)setVerticalAlignment:
    (WKInterfaceObjectVerticalAlignment)verticalAlignment ;
    
    //设置宽度
    - (void)setWidth:(CGFloat)width;
    
    //设置高度
    - (void)setHeight:(CGFloat)height;
    
    //设置相对宽度
    - (void)setRelativeWidth:(CGFloat)width withAdjustment:(CGFloat)adjustment WK_AVAILABLE_WATCHOS_ONLY(2.0);
    
    //设置相对高度
    - (void)setRelativeHeight:(CGFloat)height withAdjustment:(CGFloat)adjustment WK_AVAILABLE_WATCHOS_ONLY(2.0);
    
    //设置合适的宽度
    - (void)sizeToFitWidth ;
    
    //设置合适的高度
    - (void)sizeToFitHeight WK_AVAILABLE_WATCHOS_ONLY(2.0);
    
    //控制器属性名,与controller's 属性名相同。(没有用过)
    @property (nonatomic, readonly, copy) NSString *interfaceProperty;   // same as controller's property name
    
    

    2. WKInterfaceLabel

    2.1 WKInterfaceLabel常见的属性和方法
    @interface WKInterfaceLabel : WKInterfaceObject
    //设置文本文字
    - (void)setText:(nullable NSString *)text;
    
    //设置文本颜色
    - (void)setTextColor:(nullable UIColor *)color;
    
    //设置文本属性
    - (void)setAttributedText:(nullable NSAttributedString *)attributedText;
    
    2.2 WKInterfaceLabel用户
    @interface InterfaceController()
    
    //从storyBoard中拉线   WKInterfaceLabel
    @property (unsafe_unretained, nonatomic) IBOutlet WKInterfaceLabel *lb;
    
    //富文本Label
    @property (unsafe_unretained, nonatomic) IBOutlet WKInterfaceLabel *attributedLb;
    
    @end
    
    @implementation InterfaceController
    
    //初始化,类似于UIViewController init.
    - (void)awakeWithContext:(id)context
    {
        [super awakeWithContext:context];
    
    #mark - 普通设置Label
        //设置label 内容
        [self.lb setText:@"helloIWatch"];
    
        //设置Label字体颜色
        [self.lb setTextColor:[UIColor redColor]];
     
    #mark - 富文本设置label
    //文本内容
    NSString *str = @"人生若只如初见,何事悲风秋画扇。\n等闲变却故人心,却道故人心易变。\n骊山语罢清宵半,泪雨霖铃终不怨。\n何如薄幸锦衣郎,比翼连枝当日愿。";
    
    //创建NSMutableAttributedString
    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc]initWithString:str];
    
    //设置文本常见属性
    [attrStr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:30.0f],NSForegroundColorAttributeName:[UIColor blueColor]} range:NSMakeRange(0, str.length)];
    
    //加载富文本内容
     self.attributedLb setAttributedText:attrStr];
    }
    
    //将要展示  ,类似于UIViewController show UI
    - (void)willActivate {
        // This method is called when watch view controller is about to be visible to user
        [super willActivate];
    }
    
    //类似于UIViewController didDisappear
    - (void)didDeactivate {
        // This method is called when watch view controller is no longer visible
        [super didDeactivate];
    }
    
    @end
    
    

    3. WKInterfaceImage

    3.1 WKInterfaceImage 常见的属性和方法

    @interface WKInterfaceImage : WKInterfaceObject <WKImageAnimatable>
    
    //设置图片,此没有缓存
    - (void)setImage:(nullable UIImage *)image;
    
    //通过NSData加载图片,此方法加载图片比setImage快
    - (void)setImageData:(nullable NSData *)imageData;
    
    //通过图片名来加载图片,此有图片缓存,如果同一图片都要使用的话,建议用此方法
    - (void)setImageNamed:(nullable NSString *)imageName;
    
    //设置模板图片颜色,首先你要将图片Render 设置为template image,然后再设置如下方法,
    //这样才会有作用。具体设置如下图。
    - (void)setTintColor:(nullable UIColor *)tintColor;
    
    @end
    
    Snip20170307_13.png

    3.2 WKInterfaceImage用法和区别

    Note:

    a.图片如果经常用的话,将它放在watch APP Assets.xcassets目录下 和用 setImageNamed: 加载图片。

    b.- (void)setImageData:(nullable NSData *)imageData方法,是存储从网络下载的图片,图片会放在WatchKit extension’s 目录下。

    c.- (void)setImageNamed:(nullable NSString *)imageName,是设置动图,此方法不会存储图片。

    d.如果经常用到图片的话,可以将图片先存储起来,用WKInterfaceDevice 类,但是此方法可以在watchOS 1用,在watchOS 2行不通;
    e. 更多的image内容,请看官方文档。

    @interface InterfaceController()
    
    //用名字加载图片,会存储
    @property (unsafe_unretained, nonatomic) IBOutlet WKInterfaceImage *topImageView;
    
    //用UIImage加载图片,不会存储图片
    @property (unsafe_unretained, nonatomic) IBOutlet WKInterfaceImage *middleImageView;
    
    @end
    
    
    @implementation InterfaceController
    
    - (void)awakeWithContext:(id)context {
       
       [super awakeWithContext:context];
       
       //图片要放在watch APP Assets.xcassets文件夹下。
       [self.middleImageView setImageNamed:@"Personal communication"];
       
       //此方法加载图片,不会存储图片
       UIImage *image = [UIImage imageNamed:@"Lightweight interactions"];
       [self.middleImageView setImage:image];
    
       // Configure interface objects here.
    }
    
    - (void)willActivate {
       // This method is called when watch view controller is about to be visible to user
       [super willActivate];
    }
    
    - (void)didDeactivate {
       // This method is called when watch view controller is no longer visible
       [super didDeactivate];
    }
    
    @end
    
    

    以上是WKInterfaceLabel和WKInterfaceImage属性和方法的用法,有不足的地方,请指出,感谢!!

    相关文章

      网友评论

        本文标题:一、iWatch常用控件基本用法

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