• Xamarin.iOS 代码中添加约束练习


    Xamarin.iOS 代码中添加约束练习

    在代码中通过约束,创建如下界面:

    1. CheckBox使用第三方库:BEMCheckBox
    2. 使用Visual Format Language(VFL)视图约束,规则参见iOS开发文档:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/VisualFormatLanguage.html
    3. 对子View进行如下设置:TranslatesAutoresizingMaskIntoConstraints = false;
      1 using System;
      2 using System.Drawing;
      3 
      4 using CoreGraphics;
      5 using Foundation;
      6 using MyPassword.Utils;
      7 using SaturdayMP.XPlugins.iOS;
      8 using UIKit;
      9 
     10 namespace MyPassword.iOS.View.CheckContainer
     11 {
     12     public partial class CheckBoxContainerUIView : UIView
     13     {
     14         public CheckBoxContainerUIView()
     15         {
     16             Initialize();
     17         }
     18 
     19         public CheckBoxContainerUIView(IntPtr handle) : base(handle)
     20         {
     21             Initialize();
     22         }
     23 
     24 
     25         public CheckBoxContainerUIView(RectangleF bounds) : base(bounds)
     26         {
     27             Initialize();
     28         }
     29 
     30         void Initialize()
     31         {
     32             var checkboxNum = CreateCheckBox();
     33             checkboxNum.On = true;
     34             var checkBoxUpper = CreateCheckBox();
     35             checkBoxUpper.On = true;
     36             var checkboxSign = CreateCheckBox();
     37             checkboxSign.On = true;
     38             var checkBoxLower = CreateCheckBox();
     39             checkBoxLower.On = true;
     40             
     41 
     42             AddSubview(checkboxNum);
     43             AddSubview(checkBoxUpper);
     44             AddSubview(checkboxSign);
     45             AddSubview(checkBoxLower);
     46 
     47 
     48             var labelNum = CreateLabel("Numbers");
     49             var labelUpper = CreateLabel("Upper Case");
     50             var labelSign = CreateLabel("Signs");
     51             var labelLower = CreateLabel("Lower Case");
     52             
     53 
     54             AddSubview(labelNum);
     55             AddSubview(labelUpper);
     56             AddSubview(labelSign);
     57             AddSubview(labelLower);
     58 
     59 
     60             var viewsDictionary = NSDictionary.FromObjectsAndKeys(
     61                 new NSObject[] 
     62                 {
     63                     checkboxNum,
     64                     checkBoxUpper,
     65                     checkboxSign,
     66                     checkBoxLower,
     67                     labelNum,
     68                     labelUpper,
     69                     labelSign,
     70                     labelLower
     71                 }, 
     72                 new NSObject[] 
     73                 {
     74                     new NSString("checkboxNum"),
     75                     new NSString("checkBoxUpper") ,
     76                     new NSString("checkboxSign"),
     77                     new NSString("checkBoxLower"),
     78                     new NSString("labelNum") ,
     79                     new NSString("labelUpper"),
     80                     new NSString("labelSign"),
     81                     new NSString("labelLower")
     82                 });
     83             var metrics = new NSDictionary();
     84 
     85 
     86             int labelWidth = (int)Bounds.Width / 2 - 18 - 2 - 8 - 2;
     87 
     88             AddConstraints(NSLayoutConstraint.FromVisualFormat("H:|-2-[checkboxNum(18)]-(==8)-[labelNum("+ labelWidth + ")]-2-[checkboxSign(18)]-(==8)-[labelSign(" + labelWidth + ")]-2-|", 0, new NSDictionary(), viewsDictionary));
     89             AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|-8-[checkboxNum(18)]-(==8)-[checkBoxUpper(==checkboxNum)]-|", 0, new NSDictionary(), viewsDictionary));
     90             AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|-8-[checkboxSign(18)]-(==8)-[checkBoxLower(==checkboxSign)]-|", 0, new NSDictionary(), viewsDictionary));
     91             AddConstraints(NSLayoutConstraint.FromVisualFormat("H:|-2-[checkBoxUpper(18)]-(==8)-[labelUpper(" + labelWidth + ")]-2-[checkBoxLower(18)]-(==8)-[labelLower(" + labelWidth + ")]-2-|", 0, new NSDictionary(), viewsDictionary));
     92             AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|-8-[labelNum(18)]-(==8)-[labelUpper]-8-|", 0, new NSDictionary(), viewsDictionary));
     93             AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|-8-[labelSign(18)]-(==8)-[labelLower]-8-|", 0, new NSDictionary(), viewsDictionary));
     94 
     95         }
     96 
     97         private BEMCheckBox CreateCheckBox()
     98         {
     99             var checkBox = new BEMCheckBox(new CoreGraphics.CGRect(140, 60, 18, 18))
    100             {
    101                 BoxType = BEMBoxType.Circle,
    102                 OnAnimationType = BEMAnimationType.Stroke,
    103                 OffAnimationType = BEMAnimationType.Stroke,
    104                 OnTintColor = UIColor.Blue,
    105                 OnCheckColor = UIColor.Blue
    106 
    107             };
    108             checkBox.TranslatesAutoresizingMaskIntoConstraints = false;
    109             return checkBox;
    110         }
    111 
    112         private UILabel CreateLabel(string content)
    113         {
    114             var label = new UILabel
    115             {
    116                 Text = content
    117             };
    118             int width = (int)Bounds.Width / 2 - 18 - 2 - 8;
    119             label.Frame = new RectangleF(2, 200, width, 18);
    120             label.TranslatesAutoresizingMaskIntoConstraints = false;
    121             return label;
    122         }
    123 
    124         private void Checkbox_AnimationDidStopForCheckBox(object sender, EventArgs e)
    125         {
    126             var checkbox = sender as BEMCheckBox;
    127             DebugUtil.WriteLine("Checkbox_AnimationDidStopForCheckBox");
    128             if (checkbox == null)
    129                 return;
    130             DebugUtil.WriteLine(""+checkbox.On);
    131         }
    132     }
    133 }
    View Code
  • 相关阅读:
    python的类基础
    python导入模块
    python常用的内置函数
    python基础一数据类型之集合
    python函数-匿名函数
    python的函数(三)
    python的函数(二)
    python的函数(一)
    BZOJ4104:[Thu Summer Camp 2015]解密运算——题解
    BZOJ4033:[HAOI2015]树上染色——题解
  • 原文地址:https://www.cnblogs.com/devin_zhou/p/8067230.html
Copyright © 2020-2023  润新知