iOS - UITextField
前言
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, // defaultUITextFieldViewModeWhileEditing,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 activeUIKeyboardTypeNumbersAndPunctuation, // 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 // defaultcase WhileEditingcase UnlessEditingcase 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 activecase 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 Defaultcase Gocase Googlecase Joincase Nextcase Routecase Searchcase Sendcase Yahoocase Donecase EmergencyCallcase Continue*/textField.returnKeyType = .Join// 设置输入的字母大小写模式/*case Nonecase Wordscase Sentencescase AllCharacters*/textField.autocapitalizationType = .Words// 设置左右视图显示模式/*不设置模式,左右视图显示不出来case Nevercase WhileEditingcase UnlessEditingcase Always*/textField.leftViewMode = .AlwaystextField.rightViewMode = .Always// 设置左右视图textField.leftView = label1textField.rightView = label2// 让 textField 获取第一响应/*打开应用程序或界面时直接弹出键盘*/textField.becomeFirstResponder()// 让 textField 放弃第一响应/*收起键盘*/textField.resignFirstResponder()// 设置 textField 的代理,需遵守协议 UITextFieldDelegatetextField.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);}// 是否允许文本修改,文本修改前被调用/*NO 不允许输入,YES 允许输入(默认)range:光标范围string:当前输入的内容*/- (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)") }// 是否允许文本修改,文本修改前被调用/*false 不允许输入,true 允许输入(默认)range:光标范围string:当前输入的内容*/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 回收键盘// 让 textField 放弃第一响应,收起键盘[textField resignFirstResponder];// 所有 textField 都回收键盘[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 回收键盘// 让 textField 放弃第一响应,收起键盘textField.resignFirstResponder()// 所有 textField 都回收键盘self.view.endEditing(true)
return 键回收
- 用代理方式回收键盘(键盘上的 return 键回收键盘),需遵守协议 UITextFieldDelegate,并设置代理
// 设置 textField 的代理textField1.delegate = selftextField2.delegate = self// UITextFieldDelegate 协议方法返回,键盘上的 return 键点击后调用func textFieldShouldReturn(textField: UITextField) -> Bool {let textField_1:UITextField = self.view.viewWithTag(200) as! UITextFieldlet textField_2:UITextField = self.view.viewWithTag(300) as! UITextFieldif 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 {// 取出键盘最终的高度CGFloat keyboardHeight = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;// 取出键盘弹出需要花费的时间double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];// 设置当前视图的 frameCGRect frame = self.view.frame;frame.origin.y = -keyboardHeight;[UIView animateWithDuration:duration animations:^{self.view.frame = frame;}];}// 键盘隐藏事件处理- (void)keyboardHide:(NSNotification *)notification {// 取出键盘弹出需要花费的时间double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];// 设置当前视图的 frameCGRect frame = self.view.frame;frame.origin.y = 0;[UIView animateWithDuration:duration animations:^{self.view.frame = frame;}];}
单一观察者
// 添加系统通知观察者(检测键盘的 frame 改变)[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];// 键盘弹起隐藏事件处理- (void)keyboardWillChangeFrame:(NSNotification *)notification {// 取出键盘最终的 frameCGRect rect = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];// 取出键盘弹出需要花费的时间double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];// 设置当前视图的 frameCGRect frame = self.view.frame;frame.origin.y = -([UIScreen mainScreen].bounds.size.height - rect.origin.y);[UIView animateWithDuration:duration animations:^{self.view.frame = frame;}];}
视图上升或下降处理
设置 frame
CGRect frame = self.view.frame;frame.origin.y = -keyboardHeight;[UIView animateWithDuration:duration animations:^{self.view.frame = frame;}];
设置 约束值
self.bottomSpacing.constant = rect.size.height;[UIView animateWithDuration:duration animations:^{[self.view layoutIfNeeded];}];
设置 transform 属性
[UIView animateWithDuration:duration animations:^{CGFloat ty = [UIScreen mainScreen].bounds.size.height - rect.origin.y;self.view.transform = CGAffineTransformMakeTranslation(0, -ty);}];
用协议方法控制
// 开始编辑- (void)textFieldDidBeginEditing:(UITextField *)textField {// 获取当前视图的 frameCGRect 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) {// 取出键盘最终的高度let keyboardHeight:CGFloat = (notification.userInfo![UIKeyboardFrameEndUserInfoKey]?.CGRectValue().size.height)!// 取出键盘弹出需要花费的时间let duration:Double = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey]!.doubleValue// 设置当前视图的 framevar frame:CGRect = self.view.frameframe.origin.y = -keyboardHeightUIView.animateWithDuration(duration) {self.view.frame = frame}}// 键盘隐藏事件处理func keyboardHide(notification:NSNotification) {// 取出键盘弹出需要花费的时间let duration:Double = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey]!.doubleValue// 设置当前视图的 framevar frame:CGRect = self.view.frameframe.origin.y = 0UIView.animateWithDuration(duration) {self.view.frame = frame}}
单一观察者
// 添加系统通知观察者(检测键盘的 frame 改变)NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(UiTextField.keyboardWillChangeFrame(_:)), name: UIKeyboardWillChangeFrameNotification, object: nil)// 键盘弹起隐藏事件处理func keyboardWillChangeFrame(notification:NSNotification) {// 取出键盘最终的高度let rect:CGRect = (notification.userInfo![UIKeyboardFrameEndUserInfoKey]?.CGRectValue())!// 取出键盘弹出需要花费的时间let duration:Double = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey]!.doubleValue// 设置当前视图的 framevar frame:CGRect = self.view.frameframe.origin.y = -(UIScreen.mainScreen().bounds.size.height - rect.origin.y)UIView.animateWithDuration(duration) {self.view.frame = frame}}
视图上升或下降处理
设置 frame
var frame:CGRect = self.view.frameframe.origin.y = -keyboardHeightUIView.animateWithDuration(duration) {self.view.frame = frame}
设置 约束值
self.bottomSpacing.constant = rect.size.heightUIView.animateWithDuration(duration) {self.view.layoutIfNeeded()}
设置 transform 属性
UIView.animateWithDuration(duration) { let ty:CGFloat = UIScreen.mainScreen().bounds.size.height - rect.origin.yself.view.transform = CGAffineTransformMakeTranslation(0, -ty)}
用协议方法控制
// 开始编辑func textFieldDidBeginEditing(textField: UITextField) {// 获取当前视图的 framevar frame:CGRect = self.view.frameframe.origin.y = -53UIView.animateWithDuration(0.5) {self.view.frame = frame}}// 结束编辑func textFieldDidEndEditing(textField: UITextField) {var frame:CGRect = self.view.frameframe.origin.y = 0UIView.animateWithDuration(0.5) {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 设置
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 设置
Alignment | 文字对齐方式
-------------------------------|-------------------
Content |
-- Selected | 选中
-- Enable | 可用
-- Highlighted | 高亮
转载于:https://www.cnblogs.com/QianChia/p/5754504.html
iOS - UITextField相关推荐
- php能写入英文不能写入中文,ios,uitextfield_IOS textField怎样设置只能输入英文字母或者数字,不能输入汉字,ios,uitextfield - phpStudy...
IOS textField怎样设置只能输入英文字母或者数字,不能输入汉字 RT,要弄个输入车牌后5位字符的输入框,车牌后5位只能有数字和字母,我在网上找了很多方法,都有些问题,要么就全都能输入,要么就 ...
- iOS UITextField输入框随键盘弹出界面上移
//点击输入框界面跟随键盘上移 - (void)textFieldDidBeginEditing:(UITextField *)textField { CGRect frame = textField ...
- [iOS] UITextField隐藏软键盘心得(隐藏自身软键盘、点击Return自动转到下个文本框、轻触背景隐藏软键盘)...
作者:zyl910 关于隐藏软键盘,网上的办法良莠不齐,大多是通过实现UITextFieldDelegate来隐藏软键盘,该方法代码较多,且在文本框很多的时不好处理.我经过搜索与摸索,找到了最佳的处理 ...
- iOS UITextField使用全攻略
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, ...
- IOS UITextField
2019独角兽企业重金招聘Python工程师标准>>> // UITextField的初始化 UITextField textField = [[UITextField alloc] ...
- iOS UITextField自动换行
在网上查了一下,UITextField没有自动换行的代码,所以呢,我就用了一种相对 liu mang的方式实现了一下,但是也有不足,光标无法移动,(其实根本就没有光标...(⊙﹏⊙)b) 如果大家有什 ...
- iOS UITextField实时监听获取输入内容,自带输入法中文拼音预输入,输入完整中文后再搜索
UITextField 中文预输入搜索 个人刚开始的写法是用UIControlEventEditingChanged监听输入的值改变,当使用自带的输入法输中文拼音是,一输入就会执行搜索,因为输入框值改 ...
- iOS UITextField 明文密文切换时密文被清空问题
使用UITextField从明文切换到密文后,输入任何值都会将密文的输入先清空.这个是UITextField默认的设置,好像也没有一个属性值可以直接控制吧.不过在代理里面,加多一个判断也能避免密文清空 ...
- iOS UITextField清空按钮
extField.clearButtonMode=UITextFieldViewModeWhileEditing; 就可以了,表明编辑输入框的时候启动一键清空按钮.另外,clearButtonMode ...
最新文章
- GoogleNet - Going deeper with convolutions
- POJ 3761:Bubble Sort——组合数学
- mysql 按照指定顺序排序
- java解析xml 忽略dtd_使用dom4j解析XML时候忽略DTD文件
- Python字典中你必须知道的用法
- JavaScript中ajax如何不刷新,JavaScript基于Ajax实现不刷新在网页上动态显示文件内容...
- Photoshop阴影与内阴影
- SAP UI5 extend debug
- 1到n的整数中,1出现的次数
- 抢注“哔哩哔哩”商标卖成人用品?A站回应:不符合价值观 已申请注销
- 360浏览器保存密码设置_电脑小技巧查看浏览器保存的系统账号密码
- 【SpringBoot系列】最详细demo--集成JWT实现接口权限认证
- 手写汉字识别的发展综述
- 【JetBrain】JetBrain系列软件设置背景图
- 中移物联网在车联网场景的 TiDB 探索和实现
- 六西格玛dfss_DFSS六西格玛设计的基本内容
- Centos7安装Docker,阿里源,网易镜像
- linux C -- ftok函数
- jar 打包java文件
- 1.G3-PLC概述
热门文章
- latex 符号_sympy: 符号运算-1
- 软件测试msf模型,Visual Studio 2010 Ultimate中MSF过程模型的设计
- catalog move.php,catalog.php
- java 提取电话号码_java – 如何使用正则表达式提取字符串的电话号码?
- mysql撤销用户授权_mysql用户授权及撤销
- Altium Designer20原理图库制作
- 基于Echarts+HTML5可视化数据大屏展示—大数据智慧数据平台
- linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验
- mysql with as 用法_Python之图解with语句
- java用while循环语句输出1-100内的奇数和