仿制QQ界面

使用Duilib库仿制QQ用户界面的设计与实现 Duilib,一个轻量级的C++库,主要目标是提供一个简单、高效的途径来创建具有Windows风格的用户界面。它的历史可以追溯到2009年左右,由于当时主要的UI库如MFC和Win32 API在易用性和效率上无法满足部分开发者的需求,从而催生了Duilib。其设计之初就定位于简洁、高效、易于学习和使用,希望借助现代C++特性简化UI编程,实现高度可定制的界面。在即时通讯软件领域,QQ一直是众多用户和开发者关注的焦点。 阅读详情


[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #pragma mark - @主绘制画面  
  2. - (void)viewDidLoad  
  3. {  
  4.     [super viewDidLoad];  
  5.     // Do any additional setup after loading the view.  
  6.       
  7.     #pragma mark 1.设置View的背景图片  
  8.     UIColor *bgColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"002.jpg"]];  
  9.     [self.view setBackgroundColor:bgColor];  
  10.       
  11.     #pragma mark 2.绘制账号  
  12.     self.userLabel = [[UILabel alloc]initWithFrame:CGRectMake(20, 120, 50, 40)];  
  13.     self.userLabel.text = @"账号";  
  14.     [self.userLabel setFont:[UIFont boldSystemFontOfSize:20.0]];  
  15.     [self.view addSubview:self.userLabel];  
  16.     [self.userLabel release];  
  17.       
  18.     self.userText = [[UITextField alloc]initWithFrame:CGRectMake(self.userLabel.right , self.userLabel.top,self.userLabel.width+170 , self.userLabel.height)];  
  19.     self.userText.borderStyle = UITextBorderStyleRoundedRect;  
  20.     self.userText.placeholder = @"手机号/会员名/邮箱";  
  21.     self.userText.clearButtonMode = UITextFieldViewModeAlways;   // 使输入框后面有个小"x"  用来执行一次性删除  
  22.     self.userText.keyboardType = UIKeyboardAppearanceDefault;  
  23.     self.userText.keyboardAppearance = UIKeyboardAppearanceAlert;  
  24.     self.userText.returnKeyType = UIReturnKeyJoin;  
  25.     self.userText.delegate = self;  
  26.     [self.view addSubview:self.userText];  
  27.     [self.userText release];  
  28.       
  29.     #pragma mark 3.绘制密码  
  30.     _pwdLabel = [[UILabel alloc]initWithFrame:CGRectMake(20, 170, 50, 40)];  
  31.     _pwdLabel.text = @"密码";  
  32.     [_pwdLabel setFont:[UIFont boldSystemFontOfSize:20.0]];  
  33.     [self.view addSubview:_pwdLabel];  
  34.     [_pwdLabel release];  
  35.       
  36.     _pwdText = [[UITextField alloc]initWithFrame:CGRectMake(_pwdLabel.right, _pwdLabel.top, _pwdLabel.width+170, _pwdLabel.height)];  
  37.     _pwdText.borderStyle = UITextBorderStyleRoundedRect;  
  38.     _pwdText.placeholder = @"password";  
  39.     _pwdText.secureTextEntry = YES;  
  40.     _pwdText.clearButtonMode = UITextFieldViewModeAlways;  
  41.     _pwdText.keyboardType = UIKeyboardTypeEmailAddress;  
  42.     _pwdText.keyboardAppearance = UIKeyboardAppearanceAlert;  
  43.     _pwdText.returnKeyType = UIReturnKeyJoin;  
  44.     _pwdText.delegate = self;  
  45.     [self.view addSubview:_pwdText];  
  46.     [_pwdText release];  
  47.       
  48.     #pragma mark 4.绘制是否记住密码控件  
  49.     _isLabel = [[UILabel alloc]initWithFrame:CGRectMake(20, 210, 100, 40)];  
  50.     _isLabel.text = @"记住密码";  
  51.     [_isLabel setFont:[UIFont boldSystemFontOfSize:20.0]];  
  52.     [self.view addSubview:_isLabel];  
  53.     [_isLabel release];  
  54.       
  55.     _isISwitch = [[UISwitch alloc]initWithFrame:CGRectMake(230, 215, 40, _isLabel.height)];  
  56.     [_isISwitch addTarget:self action:@selector(openOrClosed:) forControlEvents:UIControlEventValueChanged];  
  57.     [self.view addSubview:_isISwitch];  
  58.       
  59.     #pragma mark 5.绘制登录按钮  
  60.     _login = [UIButton buttonWithType:UIButtonTypeSystem];  
  61.     _login.frame = CGRectMake(40, 250, 240, 40);  
  62.     [_login.titleLabel setFont:[UIFont boldSystemFontOfSize:30.0]];    // 设置字体大小  
  63.     _login.tintColor = [UIColor blackColor];  
  64.     [_login setBackgroundImage:[UIImage imageNamed:@"login1.png"] forState:UIControlStateNormal];  // 设置按钮的背景图片  
  65.     [_login setTitle:@"登录" forState:UIControlStateNormal];  
  66.     [_login addTarget:self action:@selector(loginView:) forControlEvents:UIControlEventTouchUpInside];  
  67.       
  68.     [self.view addSubview:_login];  
  69.       
  70. }  
  71.   
  72. #pragma mark - @响应是否记住密码开关  
  73. - (IBAction)openOrClosed:(id)sender{  
  74.   
  75.     UISwitch * switchButton = (UISwitch *)sender;  
  76.     if ([switchButton isOn]) {  
  77.         NSLog(@"YES");  
  78.     } else {  
  79.         NSLog(@"NO");  
  80.     }  
  81.       
  82. }  
  83.   
  84.   
  85. #pragma mark - @响应点击登录按钮  
  86. - (IBAction)loginView:(id)sender{  
  87.   
  88.     HMTMainViewController * mainVC = [[HMTMainViewController alloc]init];  
  89.     UINavigationController * mainNC = [[UINavigationController alloc]initWithRootViewController:mainVC];  
  90.     // 模态视图控制器呈现出来时候的视觉效果  
  91.     mainVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;  
  92.     // 模态视图控制器呈现方式,默认全屏  
  93.     mainVC.modalPresentationStyle = UIModalPresentationFullScreen;  
  94.   
  95.     NSString * userString = self.userText.text;  
  96.     NSString * pwdString  = self.pwdText.text;  
  97.     if ([userString isEqualToString:@"23423423424"] && [pwdString isEqualToString:@"hE2342340"] ) {  
  98.           
  99.         [self presentViewController:mainNC animated:YES completion:^{  
  100.             NSLog(@"登陆成功");  
  101.         }];  
  102.           
  103.     } else {  
  104.         NSLog(@"用户名或者密码错误");  
  105.     }  
  106.       
  107.   
  108.     [mainNC release];  
  109.     [mainVC release];  
  110.   
  111.     #pragma mark 第3种方式收回键盘  
  112.     // 当前视图结束编辑  
  113.     [self.view endEditing:YES];  
  114. }  
  115.   
  116. #pragma mark - @3种方法来收回弹出来的键盘  
  117. #pragma mark  第1种方式来收回键盘 -------> 通过UITextField本身的协议来实现  
  118. - (BOOL)textFieldShouldReturn:(UITextField *)textField  
  119. {  
  120.     // 放弃第一响应者  
  121.     [textField resignFirstResponder];  
  122.     return YES;  
  123. }  
  124.   
  125. #pragma mark  第2种方式来收回键盘 -------> 通过重写UIResponder的方法  
  126. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{  
  127.       
  128.     // selfself.view.subviews 返回的是加载在View视图上的所有视图的数组  
  129.     [self.view.subviews enumerateObjectsUsingBlock:^(UIView* obj, NSUInteger idx, BOOLBOOL *stop) {  
  130.         if ([obj isKindOfClass:[UITextField class]]) {  
  131.             [obj resignFirstResponder];  
  132.         }  
  133.     }];  
  134.   
  135. }  
仿制QQ用户界面的VC++项目 在本章中,我们将深入探讨使用Visual C++创建一个类似QQ的界面设计。我们将详细分析界面布局、功能模块划分以及整体用户体验的构建。掌握这些知识能够帮助开发者理解并应用Visual C++强大的界面设计能力,进一步提升应用程序的专业感和用户满意度。MFC(Microsoft Foundation Classes)是微软提供的一个用于编写Windows应用程序的类库。MFC库封装了许多Windows API调用,使得开发者可以使用面向对象的方式来编写应用程序,而不必直接与复杂的API打交道。 阅读详情

相关推荐

完全教程:如何在Android上仿制QQ界面设计

Android UI设计关注于如何通过界面元素与用户进行交互,设计优秀的UI不仅可以提升用户体验,还能加强应用的可访问性和易用性。自定义控件则是提高UI灵活性和个性化的重要手段,允许开发者突破默认控件的限制,按照需求创建特定功能和样式的控件。继承一个已有的控件类(如View或其子类)。在构造方法中初始化控件属性。重写onDraw()方法以定制绘图逻辑。提供必要的get和set方法来修改控件状态。// 构造方法初始化// 绘制逻辑定制@Override。

weixin_33750664的博客 758

用html写QQ音乐首页,使用HTML5仿制的QQ音乐PC版界面

QQ音乐界面仿制在专业认识实习中,我们通过学习HTML超文本标记语言,提高了静态web前端页面的开发能力,下面就给大家展示一下我们小组仿制的QQ音乐官网界面,只是仿制了PC版,但是部分手机浏览器(QQ浏览器Anoriod)也可以打开(无法进行手机版界面自适应)。下面展示一下各界面的源码:主页相应CSS源码*{margin: 0 auto;padding: 0px;}.topNav{width: 1...

weixin_32790385的博客 3733

仿制QQ登录与主界面的Windows应用程序开发

MFC库中提供了丰富的标准控件供开发者使用,但标准控件的功能和外观可能无法满足特定的应用需求。这时,自定义绘制控件技术显得尤为重要。自定义绘制控件允许开发者控制控件的外观和行为,包括绘制按钮、编辑框、列表控件等。在MFC中,控件的绘制是通过消息映射机制来实现的,即当控件需要重绘时,系统会向控件发送WM_PAINT消息。开发者可以重写控件的OnPaint函数来处理这些消息,并实现自定义的绘制逻辑。

weixin_42598278的博客 997

QT实现360界面(改进版)

改进后的360界面,消除了两个有关延时处理和事件响应的bug

仿制QQ用户界面的开发演示

设计风格是界面设计的基石,它不仅反映了产品的品牌特性,还能决定用户的第一印象。常见的设计风格包括但不限于以下几种:扁平化设计(Flat Design):强调简洁、直观,去除多余的装饰性元素,强调内容本身。这种风格常见于现代的移动应用和网页设计中,因为它能够在不同的设备和屏幕尺寸上保持良好的可读性和易用性。材料设计(Material Design):由谷歌提出的一种设计语言,它通过使用纸张和墨水的隐喻来创造一个更加逼真和深度感的界面。

weixin_33628677的博客 693

Labview仿制QQ用户界面的全过程指南

Labview是一种由美国国家仪器(National Instruments,简称NI)开发的图形化编程语言,它广泛应用于数据采集、仪器控制、工业自动化等领域。Labview独特的图形化编程方式使编程变得更加直观、便捷。用户体验(User Experience,简称UX)涵盖了用户与产品、系统或者服务接触、使用的所有方面。它涉及到用户的情感、偏好、物理和心理反应,以及在使用过程中的实际性能。良好的用户体验设计能够使产品更直观易用,增强用户满意度,提高产品的市场竞争力。

weixin_30700095的博客 424

使用HTML5仿制的QQ音乐PC版界面

QQ音乐界面仿制 在专业认识实习中,我们通过学习HTML超文本标记语言,提高了静态web前端页面的开发能力,下面就给大家展示一下我们小组仿制的QQ音乐官网界面,只是仿制了PC版,但是部分手机浏览器(QQ浏览器Anoriod)也可以打开(无法进行手机版界面自适应)。 下面展示一下各界面的源码: 主页 <!DOCTYPE html> <html lang="en"> <h...

kirinmin 1万+

使用易语言打造QQ音乐界面仿制品

易语言是一种简单易学的编程语言,特别适合于初学者和非专业编程人员。它以中文作为编程语言的语法,极大降低了编程语言的学习难度,使得编程变得通俗易懂。易语言的发展始于20世纪90年代末,由国内的编程爱好者团队自主研发,目前已经形成了完善的编程环境和丰富的组件库。这些组件库为开发人员提供了快速开发应用程序的便利,从简单的界面设计到复杂的逻辑实现,都可以通过易语言的组件库高效完成。易语言的出现,不仅降低了编程的门槛,更让众多的编程爱好者在应用软件开发领域得到了实践和展示的机会。

weixin_33531560的博客 900

Swift语言--简单仿制QQ登录界面

开发工具:xcode6.32 仿制QQ登录界面,以供iOS开发者参考: {优快云:CODE:test} mport UIKit class ViewController: UIViewController {          var QQnum = UITextField()     var passNum = UITextField()     override

qianhui520的专栏 1580

Qt运用C++编写的仿word代码

用Qt编写的实现部分word工具的代码,如有不足之处,请大家批评指正!

Qt仿腾讯tgp界面

仿照腾讯的TGP界面做的车辆信息查询系统,设计数据库,tablewidget的用法

python制作qq登录界面_electron 仿制QQ登录界面

首先来看看qq的登录界面:准备开发制作一个窗口先主进程代码:import {BrowserWindow, webContents, app, ipcMain} from 'electron'LoginWindow(); //暂时调用ipcMain.on('quitApp', () => {app.quit();});function LoginWindow() {const login...

weixin_39831001的博客 1264

jQuery easyui ,extjs,html200套模板+仿WEBQQ8套模板后台模板

200套后台管理模板(包含jquery easyui,extjs,html后台模板)+10套webQQ模板(已经分类),包含各种模板,适用各种场景,怎有一套适合你

electron 仿制QQ登录界面

首先来看看qq的登录界面: 准备开发 制作一个窗口先 主进程代码: import {BrowserWindow, webContents, app, ipcMain} from 'electron' LoginWindow(); //暂时调用 ipcMain.on('quitApp', () => { app.qu...

weixin_33850890的博客 2259

QT模仿360资质

用QT完全仿制360的一个界面,效果特别好,希望有需要的朋友相互学习。

QT实现的模拟win+r窗口

使用QT编写的模拟windows的运行窗口,可实现输入命令完成相应操作的界面

qt仿制qq登录界面

【代码】qt仿制qq登录界面。

weixin_56935265的博客 844

Zotero插件安装保姆级教程:从Jasminum到Sci-Hub,一站式搞定文献管理

本文提供Zotero插件安装的保姆级教程,从Jasminum到Sci-Hub,一站式搞定文献管理。通过详细配置和实战案例,帮助用户高效构建文献工作流,提升研究效率。重点介绍了元数据抓取、PDF管理、文献分析和知识产出等关键插件的使用方法。

weixin_42531516的博客 169
上一篇: [UIApplication sharedApplication].delegate 调用全局变量
下一篇: ios7毛玻璃效果实现
SMY_API
博客等级 码龄13年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值