iOS - UITextField

来源:http://www.cnblogs.com/QianChia/archive/2016/08/09/5754504.html
-Advertisement-
Play Games

前言 1、UITextField 的創建 Objective C Swift 2、UITextField 的設置 Objective C Swift 3、textField 的編輯 協議方法,需遵守協議 UITextFieldDelegate,並設置代理 Objective C Swift 4、te ...


前言

    NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextInput, NSCoding>
    @available(iOS 2.0, *)       public class UITextField : UIControl, UITextInput, NSCoding

1、UITextField 的創建

  • Objective-C

        // 實例化 UITextField 對象
        UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 100, 200, 30)];
    
        // 將 textField 加到 window 上顯示出來
        [self.view addSubview:textField];
  • Swift

        // 實例化 UITextField 對象
        let textField:UITextField = UITextField(frame: CGRectMake(20, 100, 200, 30))
    
        // 將 textField 加到 window 上顯示出來  
        self.view.addSubview(textField)

2、UITextField 的設置

  • Objective-C

        // 設置邊框樣式
        /*
            UITextBorderStyleNone,                     無邊框,預設
            UITextBorderStyleLine,                     直線邊框
            UITextBorderStyleBezel,                    邊框 + 陰影
            UITextBorderStyleRoundedRect               圓角矩形邊框
         */
        textField.borderStyle = UITextBorderStyleLine;
    
        // 設置背景顏色
        /*
            預設是透明的
        */
        textField.backgroundColor = [UIColor yellowColor];
    
        // 設置背景圖片
        textField.background = [UIImage imageNamed:@"pic2"];
    
        // 設置提示文字
        /*
            用戶輸入時自動消失
        */
        textField.placeholder = @"請輸入用戶名";
    
        // 設置輸入的字體顏色
        textField.textColor = [UIColor redColor];
    
        // 設置文字對齊方式
        textField.textAlignment = NSTextAlignmentLeft;
    
        // 設置最小可縮小的字型大小
        textField.minimumFontSize = 10;
    
        // 自動調整文字大小
        /*
            自動調整文字的大小以適應 textField 的寬度
        */
        textField.adjustsFontSizeToFitWidth = YES;
    
        // 設置密文輸入模式
        /*
            default is NO
        */
        textField.secureTextEntry = YES;
    
        // 設置顯示清除按鈕    
        /*
            UITextFieldViewModeNever,            // default
            UITextFieldViewModeWhileEditing,
            UITextFieldViewModeUnlessEditing,
            UITextFieldViewModeAlways
        */
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
    
        // 設置鍵盤樣式
        /*
            UIKeyboardTypeDefault,                 // Default type for the current input method.
            UIKeyboardTypeASCIICapable,            // Displays a keyboard which can enter ASCII characters,
                                                   // non-ASCII keyboards remain active
            UIKeyboardTypeNumbersAndPunctuation,   // Numbers and assorted punctuation.
            UIKeyboardTypeURL,                     // A type optimized for URL entry.
            UIKeyboardTypeNumberPad,               // A number pad (0-9). Suitable for PIN entry.
            UIKeyboardTypePhonePad,                // A phone pad (1-9, *, 0, #, with letters under the numbers).
            UIKeyboardTypeNamePhonePad,            // A type optimized for entering a person's name or phone number.
            UIKeyboardTypeEmailAddress,            // A type optimized for multiple email address entry.
            UIKeyboardTypeDecimalPad,              // A number pad with a decimal point.
            UIKeyboardTypeTwitter,                 // A type optimized for twitter text entry (easy access to @ #)
            UIKeyboardTypeWebSearch,               // A default keyboard type with URL-oriented addition.
            UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,      // Deprecated
        */
        textField.keyboardType = UIKeyboardTypeDefault;
    
        // 設置返回鍵樣式
        /*
            UIReturnKeyDefault,
            UIReturnKeyGo,
            UIReturnKeyGoogle,
            UIReturnKeyJoin,
            UIReturnKeyNext,
            UIReturnKeyRoute,
            UIReturnKeySearch,
            UIReturnKeySend,
            UIReturnKeyYahoo,
            UIReturnKeyDone,
            UIReturnKeyEmergencyCall,
            UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),
        */
        textField.returnKeyType = UIReturnKeyJoin;
    
        // 設置輸入的字母大小寫模式
        /*
            UITextAutocapitalizationTypeNone,
            UITextAutocapitalizationTypeWords,
            UITextAutocapitalizationTypeSentences,
            UITextAutocapitalizationTypeAllCharacters,
        */
        textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
    
        // 設置左右視圖顯示模式
        /*
            不設置模式,左右視圖顯示不出來
    
            UITextFieldViewModeNever,
            UITextFieldViewModeWhileEditing,
            UITextFieldViewModeUnlessEditing,
            UITextFieldViewModeAlways
        */
        textField.leftViewMode = UITextFieldViewModeAlways;
        textField.rightViewMode = UITextFieldViewModeAlways;
    
        // 設置左右視圖
        textField.leftView = label1;
        textField.rightView = label2;
    
        // 讓 textField 獲取第一響應
        /*
            打開應用程式或界面時直接彈出鍵盤
        */
        [textField becomeFirstResponder];
    
        // 讓 textField 放棄第一響應
        /*
            收起鍵盤
        */
        [textField resignFirstResponder]; 
    
        // 設置 textField 的代理,需遵守協議 <UITextFieldDelegate>
        textField.delegate = self;
  • Swift

        // 設置邊框樣式
        /*
            case None                       無邊框,預設
            case Line                       直線邊框
            case Bezel                      邊框 + 陰影
            case RoundedRect                圓角矩形邊框
        */
        textField.borderStyle = .Line
    
        // 設置背景顏色
        /*
            預設是透明的
        */
        textField.backgroundColor = UIColor.yellowColor()
    
        // 設置背景圖片
        textField.background = UIImage(named: "pic2")
    
        // 設置提示文字
        /*
            用戶輸入時自動消失
        */
        textField.placeholder = "請輸入用戶名"
    
        // 設置輸入的字體顏色
        textField.textColor = UIColor.redColor()
    
        // 設置文字對齊方式
        textField.textAlignment = NSTextAlignment.Left
    
        // 設置最小可縮小的字型大小
        textField.minimumFontSize = 10
    
        // 自動調整文字大小
        /*
            自動調整文字的大小以適應 textField 的寬度
        */
        textField.adjustsFontSizeToFitWidth = true
    
        // 設置密文輸入模式
        /*
            default is NO
        */
        textField.secureTextEntry = true
    
        // 設置顯示清除按鈕
        /*
            case Never                // default
            case WhileEditing
            case UnlessEditing
            case Always
        */
        textField.clearButtonMode = .WhileEditing
    
        // 設置鍵盤樣式
        /*
            case Default         // Default type for the current input method.
            case ASCIICapable    // Displays a keyboard which can enter ASCII characters, 
                                 // non-ASCII keyboards remain active
            case NumbersAndPunctuation  // Numbers and assorted punctuation.
            case URL             // A type optimized for URL entry.
            case NumberPad       // A number pad (0-9). Suitable for PIN entry.
            case PhonePad        // A phone pad (1-9, *, 0, #, with letters under the numbers).
            case NamePhonePad    // A type optimized for entering a person's name or phone number.
            case EmailAddress    // A type optimized for multiple email address entry.
            case DecimalPad      // A number pad with a decimal point.
            case Twitter         // A type optimized for twitter text entry (easy access to @ #)
            case WebSearch       // A default keyboard type with URL-oriented addition.
    
            public static var Alphabet: UIKeyboardType { get } // Deprecated
        */
        textField.keyboardType = .Default
    
        // 設置返回鍵樣式
        /*
            case Default
            case Go
            case Google
            case Join
            case Next
            case Route
            case Search
            case Send
            case Yahoo
            case Done
            case EmergencyCall
            case Continue
        */
        textField.returnKeyType = .Join
    
        // 設置輸入的字母大小寫模式
        /*
            case None
            case Words
            case Sentences
            case AllCharacters
        */
        textField.autocapitalizationType = .Words
    
        // 設置左右視圖顯示模式
        /*
            不設置模式,左右視圖顯示不出來
    
            case Never
            case WhileEditing
            case UnlessEditing
            case Always
        */
        textField.leftViewMode = .Always
        textField.rightViewMode = .Always
    
        // 設置左右視圖
        textField.leftView = label1
        textField.rightView = label2
    
        // 讓 textField 獲取第一響應
        /*
            打開應用程式或界面時直接彈出鍵盤
        */
        textField.becomeFirstResponder()
    
        // 讓 textField 放棄第一響應
        /*
            收起鍵盤
        */
        textField.resignFirstResponder()
    
        // 設置 textField 的代理,需遵守協議 UITextFieldDelegate
        textField.delegate = self

3、textField 的編輯

  • 協議方法,需遵守協議 UITextFieldDelegate,並設置代理

  • Objective-C

        // 將要開始編輯,編輯開始前被調用
        - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    
            return YES;
        }
    
        // 已經開始編輯,編輯開始後被調用
        - (void)textFieldDidBeginEditing:(UITextField *)textField {
    
        }
    
        // 將要結束編輯,編輯結束前被調用
        - (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    
            return YES;
        }
    
        // 已經結束編輯,編輯結束後被調用
        - (void)textFieldDidEndEditing:(UITextField *)textField {
    
            // 輸出 textfield 中輸入的內容
            NSLog(@"您輸入的內容為:%@", textField.text);
        }
    
        // 文本修改,文本修改前被調用
        - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    
            return YES;
        }
    
        // 返回,鍵盤上的 return 鍵觸摸後調用
        - (BOOL)textFieldShouldReturn:(UITextField *)textField {
    
            return YES;
        }
    
        // 清空,文本輸入框中清除按鈕被觸摸時調用
        - (BOOL)textFieldShouldClear:(UITextField *)textField {
    
            return YES;
        }
  • Swift

        // 將要開始編輯,編輯開始前被調用
        func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
    
            return true
        }
    
        // 已經開始編輯,編輯開始後被調用
        func textFieldDidBeginEditing(textField: UITextField) {
    
        }
    
        // 將要結束編輯,編輯結束前被調用
        func textFieldShouldEndEditing(textField: UITextField) -> Bool {
    
            return true
        }
    
        // 已經結束編輯,編輯結束後被調用
        func textFieldDidEndEditing(textField: UITextField) {
    
            // 輸出 textfield 中輸入的內容
            print("您輸入的內容為:\(textField.text)")                                                              
        }
    
        // 文本修改,文本修改前被調用
        func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    
            return true
        }
    
        // 返回,鍵盤上的 return 鍵觸摸後調用
        func textFieldShouldReturn(textField: UITextField) -> Bool {
    
            return true
        }
    
        // 清空,文本輸入框中清除按鈕被觸摸時調用
        func textFieldShouldClear(textField: UITextField) -> Bool {
    
            return true
        }

4、textField 的鍵盤迴收

  • Objective-C

    • 觸摸手勢回收

      • 用觸摸手勢方式回收鍵盤,觸摸界面時鍵盤消失
          // 單一 textField 回收鍵盤
          - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      
              // 將 tag 值為 100 的 textField 重定向到當前 textField
              UITextField *textField = (id)[self.view viewWithTag:100];
      
              // 讓 textField 放棄第一響應,收起鍵盤
              [textField resignFirstResponder];
          }
      
          // 所有 textField 都回收鍵盤
          - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      
              [self.view endEditing:YES]; 
          }
    • return 鍵回收

      • 用代理方式回收鍵盤(鍵盤上的 return 鍵回收鍵盤),需遵守協議 UITextFieldDelegate,並設置代理
          // 設置 textField 的代理
          textField1.delegate = self;
          textField2.delegate = self;
      
          // UITextFieldDelegate 協議方法返回,鍵盤上的 return 鍵觸摸後調用 
          - (BOOL)textFieldShouldReturn:(UITextField *)textField {
      
              UITextField *textField_1 = (id)[self.view viewWithTag:200];
              UITextField *textField_2 = (id)[self.view viewWithTag:300];
      
              if (textField == textField_1) {
      
                  // 讓 textField_2 獲取第一響應
                  // 點擊 textfield_1 上的 return 鍵時,輸入游標自動跳轉到 textfield_2 內
                  [textField_2 becomeFirstResponder];
              }
              else{
                  // 讓 textField_2 放棄第一響應
                  // 點擊 textfield_2 上的 return 鍵時,鍵盤迴收
                  [textField_2 resignFirstResponder];
              }
      
              return YES;
          }
  • Swift

    • 觸摸手勢回收

      • 用觸摸手勢方式回收鍵盤,觸摸界面時鍵盤消失
          // 單一 textField 回收鍵盤
          override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
      
              // 將 tag 值為 100 的 textField 重定向到當前 textField
              let textField:UITextField = self.view.viewWithTag(100) as! UITextField
      
              // 讓 textField 放棄第一響應,收起鍵盤
              textField.resignFirstResponder()
          }
      
          // 所有 textField 都回收鍵盤
          override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
      
              self.view.endEditing(true)
          }
    • return 鍵回收

      • 用代理方式回收鍵盤(鍵盤上的 return 鍵回收鍵盤),需遵守協議 UITextFieldDelegate,並設置代理
          // 設置 textField 的代理
          textField1.delegate = self
          textField2.delegate = self
      
          // UITextFieldDelegate 協議方法返回,鍵盤上的 return 鍵觸摸後調用
          func textFieldShouldReturn(textField: UITextField) -> Bool {
      
              let textField_1:UITextField = self.view.viewWithTag(200) as! UITextField
              let textField_2:UITextField = self.view.viewWithTag(300) as! UITextField
      
              if textField == textField_1 {
      
                  // 讓 textField_2 獲取第一響應
                  // 點擊 textfield_1 上的 return 鍵時,輸入游標自動跳轉到 textfield_2 內
                  textField_2.becomeFirstResponder()
              }
              else{
                  // 讓 textField_2 放棄第一響應,點擊 textfield_2 上的 return 鍵時,鍵盤迴收
                  textField_2.resignFirstResponder()
              }
      
              return true
          }

5、textField 視圖的上升/下降

  • Objective-C

    • 用系統觀察者控制

          // 添加系統���知觀察者(檢測鍵盤的顯示與隱藏)
      
          // 檢測鍵盤的彈起
          [[NSNotificationCenter defaultCenter] addObserver:self 
                                                   selector:@selector(keyboardShow:) 
                                                       name:UIKeyboardWillShowNotification 
                                                     object:nil];
      
          // 檢測鍵盤的隱藏   
          [[NSNotificationCenter defaultCenter] addObserver:self 
                                                   selector:@selector(keyboardHide:) 
                                                       name:UIKeyboardWillHideNotification 
                                                     object:nil];
      
          // 鍵盤彈起事件處理
          - (void)keyboardShow:(NSNotification *)notification {
      
              // 獲取當前視圖的 frame
              CGRect frame = self.view.frame;
              frame.origin.y = -53;
      
              [UIView animateWithDuration:0.5 animations:^{
                  self.view.frame = frame;
              }];
          }
      
          // 鍵盤隱藏事件處理
          - (void)keyboardHide:(NSNotification *)notification {
      
              CGRect frame = self.view.frame;
              frame.origin.y = 0;
      
              [UIView animateWithDuration:0.5 animations:^{
                  self.view.frame = frame;
              }];
          }
    • 用協議方法控制

          // 開始編輯
          - (void)textFieldDidBeginEditing:(UITextField *)textField {
      
              // 獲取當前視圖的 frame
              CGRect frame = self.view.frame;         
              frame.origin.y = -53;
      
              [UIView animateWithDuration:0.5 animations:^{
                  self.view.frame = frame;
              }];
          }
      
          // 結束編輯
          - (void)textFieldDidEndEditing:(UITextField *)textField {
      
              CGRect frame = self.view.frame;
              frame.origin.y = 0;
      
              [UIView animateWithDuration:0.5 animations:^{
                  self.view.frame = frame;
              }];
          }
  • Swift

    • 用系統觀察者控制

          // 添加系統通知觀察者(檢測鍵盤的顯示與隱藏)
      
          // 檢測鍵盤的彈起
          NSNotificationCenter.defaultCenter().addObserver(self, 
                                                  selector: #selector(UiTextField.keyboardShow(_:)), 
                                                      name: UIKeyboardWillShowNotification, 
                                                    object: nil)
      
          // 檢測鍵盤的隱藏
          NSNotificationCenter.defaultCenter().addObserver(self, 
                                                  selector: #selector(UiTextField.keyboardHide(_:)), 
                                                      name: UIKeyboardWillHideNotification, 
                                                    object: nil)
      
          // 鍵盤彈起事件處理
          func keyboardShow(notification:NSNotification) {
      
              // 獲取當前視圖的 frame
              var frame:CGRect = self.view.frame          
              frame.origin.y = -53
      
              UIView.animateWithDuration(0.5, animations: { () -> Void in
                  self.view.frame = frame
              })
          }
      
          // 鍵盤隱藏事件處理
          func keyboardHide(notification:NSNotification) {
      
              var frame:CGRect = self.view.frame
              frame.origin.y = 0
      
              UIView.animateWithDuration(0.5, animations: { () -> Void in
                  self.view.frame = frame
              })
          }
    • 用協議方法控制

          // 開始編輯
          func textFieldDidBeginEditing(textField: UITextField) {
      
              // 獲取當前視圖的 frame
              var frame:CGRect = self.view.frame
              frame.origin.y = -53
      
              UIView.animateWithDuration(0.5, animations: { () -> Void in
                  self.view.frame = frame
              })
          }
      
          // 結束編輯
          func textFieldDidEndEditing(textField: UITextField) {
      
              var frame:CGRect = self.view.frame
              frame.origin.y = 0
      
              UIView.animateWithDuration(0.5, animations: { () -> Void in
                  self.view.frame = frame
              })
          }

6、計算鍵盤高度

  • 不同型號的 iOS 設備的鍵盤尺寸:

    Type iPhone 6(s) Plus iPhone 6(s) iPhone 5(s/c)/4(s)/SE
    Default
    ASCIICapable
    NumbersAndPunctuation
    URL 271 258 253
    EmailAddress
    Twitter
    WebSearch
    Alphabet
    ------------------------ ------------------ -------------- -------------------------
    NumberPad
    PhonePad 226 216 216
    NamePhonePad
    DecimalPad
  • Objective-C

        // 在系統觀察者響應方法中,獲取觀察的信息
        NSDictionary *userInfo = notification.userInfo;
    
        CGFloat keyboardHeight = [userInfo[@"UIKeyboardFrameEndUserInfoKey"] CGRectValue].size.height;
  • Swift

        // 在系統觀察者響應方法中,獲取觀察的信息
        let userInfo = notification.userInfo!
    
        let keyboardHeight = userInfo["UIKeyboardFrameEndUserInfoKey"]?.CGRectValue().size.height

7、Storyboard 中設置

  • 在 Storyboard 場景中設置

    • Text Field 設置

      TextField1

      Text 文字類型及文字
      Color 文字顏色
      Font 文字字體
      Alignment 文字對齊方式
      Placeholder 占位文字
      Background 背景圖片
      Disabled 無效狀態背景圖片
      Border Style 邊框類型
      Clear Button 清除按鈕顯示時間
      -- Clear when editing begins 開始編輯時顯示清楚按鈕
      Min Font Size 最小字體大小
      -- Adjust to Fit 自動調整文字大小
      Capitalization 大小寫模式
      Correction 自動糾正
      Spell Checking 拼寫檢查
      Keyboard Type 鍵盤樣式
      Appearance
      Return Key 返回鍵樣式
      -- Auto-enable Return Key 自動使能返回鍵
      -- Secure Text Entry 密文輸入
    • Control 設置

      TextField1

      Alignment 文字對齊方式
      Content
      -- Selected 選中
      -- Enable 可用
      -- Highlighted 高亮

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 因項目介面變動,導致之前的CoreData欄位需要調整。於是記錄下出錯的流程和解決方案。步驟如下: 1. 先在 *****.xcdatamodeld 文件中添加需要調整的欄位。並更新本地model實體。 2. 我的流程是接到消息後本地存儲在CoreData裡面,然後UI展示(具體消息推送和接收問題, ...
  • 參考文檔: http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73e7e808c027fa2ce0ac4384c413037bee43a7c4b54ce81273044b2141ebdac3574310023 ...
  • 一,代碼。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.title=@"字元串的分割"; //一般的字元串的解析 NSString *string ...
  • 一、何謂版本控制 它是一種軟體工程籍以在開發的過程中,確保由不同人所編輯的同一檔案都得到更新,它透過文檔控制記錄程式各個模塊的改動,併為每次改動編上序號,並且編輯錯誤之後還可以回溯到以前的版本 二、可供我們選擇的版本控制系統 1、VCS (本地版本控制) 2、VSS、CVS(集中版本控制) 3、Cl ...
  • 之前發表過一篇關於視錯覺的文章:《視錯覺:從一個看似簡單的自定義控制項說起》,雖然不是用iOS開發中的Mask來實現的,但是原理和Mask原理是一樣的,相當於手動給上面一層加了個Mask。當然用mask完全可以實現上篇博客中的效果,無論是使用Mask還是不使用Mask,都是利用了視錯覺,都是兩層不一樣 ...
  • Swift - UITableView展開縮放動畫 效果 源碼 https://github.com/YouXianMing/Swift-Animations ...
  • AndroidStudio(以後都簡稱AS),作為google的親兒子,終於出了個像樣的android ide,再也不用在eclipse中又是Adt,又是這又是那的,一大堆的集成了。廢話不多說,這個系列打算用AS+WebApi寫一個自己的Oa App(AS編寫App代碼,WebApi編寫介面代碼)。 ...
  • 非對稱加密演算法 RSA 介紹 1977年,三位數學家Rivest、Shamir 和 Adleman 設計了一種演算法,可以實現非對稱加密。 演算法原理: https://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...