从零学IOS开发(一)_从零学ios开发(一)-程序员宅基地

技术标签: app  移动开发  ios  

一,开发环境

​ IOS开发环境很简单,只需一台MAC和一个IDE(Xcode),Xcode是apple官方的开发环境,有了电脑和IDE后就不需要配置任何东西了。Mac挺费米的,不过好在Xcode是免费下载的。

二,新建项目

​ 新建项目时候需要选择app运行的平台,因为Xcode不仅可以开发IOS应用也能开发mac,watch,ipad等上的软件。
在这里插入图片描述
这里选择IOS中的app就行。
在这里插入图片描述
然后就是项目名称和使用的语言,apple的app可以使用objective-c和swift开发,但国内基本使用objective-c,所以这里也从objective-c开始学起。

三,项目文件结构

项目结构这里取决于使用的ios版本,创建成功后点击项目,打开的就是项目的配置,从中可以找到运行的ios版本,下图是ios14.5版本。
appdelegate:用来管理整个app的生命周期
scenedelegate:用来管理视图也就是界面的生命周期
viewcontroller:app的主要组件,app的功能逻辑代码主要写这里
其他的都是一些app的配置文件和图片等资源文件夹

如果是ios13之前的版本就不会有scenedelegate,因为ios13之前的视图生命周期和app生命周期都由appdelegate管理。
在这里插入图片描述

四,基本组件

  • UIWindow:进入scenedelegate.h可以看到一个这个对象,这是app最上层的视图组件
  • UIView: 最基本的视图类,app中所有看见的都是uiview,是可以嵌套的,源码中有这几个方法,可以给一个UIView添加子UIview
(void)addSubview:(UIView *)view;
(void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
(void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;
  • UIViewController:进入viewcontroller.h可以看到viewcontroller是继承了UIViewController,这是最常用的组件之一,是视图控制器,管理UIView的层级结构
  • UITabBarController: app底部的菜单栏就是这个实现的,其有两个属性,ViewController和TabBar
    在这里插入图片描述
  • UINavigationController:类似于UITabBarController,这是IOS软件经常看到的返回按钮,其也有两个属性ViewController和NavigationBar
    在这里插入图片描述
    在这里插入图片描述

五,APP基本雏形

首先看一个基本的app界面有哪些内容:

  1. 顶部的导航栏,有返回按钮,编辑按钮和中间的标题
  2. 中间主要内容展示区,显示一张图片和图片列表
  3. 底部的菜单栏,有三个按钮
    在这里插入图片描述

现在用前面介绍的组件来实现这些内容

SceneDelegate.m connectionOptions方法中

UITabBarController *tabbar = [[UITabBarController alloc]init];
    
    
    ViewController *myview = [[ViewController alloc]init];
    UINavigationController *nagavition = [[UINavigationController alloc]initWithRootViewController:myview];
    nagavition.tabBarItem.title = @"导航";

    
    UIViewController *view1 = [[UIViewController alloc]init];
    view1.view.backgroundColor = [UIColor redColor];
    view1.tabBarItem.title = @"文章";
       
    UIViewController *view2 = [[UIViewController alloc]init];
    view2.view.backgroundColor = [UIColor yellowColor];
    view2.tabBarItem.title = @"新闻";
       
    UIViewController *view3 = [[UIViewController alloc]init];
    view3.view.backgroundColor = [UIColor greenColor];
    view3.tabBarItem.title = @"视频";
       
    UIViewController *view4 = [[UIViewController alloc]init];
    view4.view.backgroundColor = [UIColor blueColor];
    view4.tabBarItem.title = @"我的";
       
    [tabbar setViewControllers:@[nagavition,view1,view2,view3,view4] ];
    self.window.rootViewController = tabbar;
ViewController.m 中

- (void)viewDidLoad {
    [super viewDidLoad];

    
    UIView *view2 = [[UIView alloc] init];
    view2.backgroundColor = [UIColor blueColor];
    view2.frame = CGRectMake(150, 150, 100, 100);
    [self.view addSubview:view2];
    
    UITapGestureRecognizer *gesture=[[UITapGestureRecognizer alloc] initWithTarget:self action: @selector(pushCtl)];
    [view2 addGestureRecognizer:gesture];
    
}

- (void)pushCtl{
    UIViewController *con = [[UIViewController alloc]init];
    con.view.backgroundColor = [UIColor whiteColor];
  
    
    con.navigationItem.title = @"图片展示";
    con.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Edit" menu:nil];
    
    TestView *view = [[TestView alloc] init];
    view.backgroundColor = [UIColor redColor];
    view.frame = CGRectMake(100, 100, 100, 100);
    
    
    [con.view addSubview:view];
    
    [self.navigationController pushViewController:con animated:YES];
    
}

主界面:
在这里插入图片描述
点击蓝色方块后
在这里插入图片描述
点击底部文章按钮
在这里插入图片描述

到这里已经具备一个app的雏形了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hwj1134638172/article/details/117197426

智能推荐

爬虫初级二(爬中国古诗文网)_中国文化爬虫作业-程序员宅基地

文章浏览阅读502次。爬虫初级二(爬中国古诗文网)第一步先分析要爬取网站的网址为什么要先分析网址呢?通过网址我们可以知道此网页页面是异步请求(post)还是同步请求(get)get请求:最常见的HTTP请求方式,普通上网浏览页面使用的就是get请求方式。get请求方式的参数直接跟在url后,一般以?开始。post请求:post请求的参数没有直接跟在url后边,这个参数需要自己找,找到后用&连接到url后边。这里用到的是get请求就不说怎要找post请求的参数了要爬取的urlurl=“https://www.g_中国文化爬虫作业

python生成实际尺寸棋盘格(cm),并生成word文件_棋盘格怎么生成-程序员宅基地

文章浏览阅读3.9k次,点赞8次,收藏37次。实验室最近需要制作棋盘格,但是上网找的资料生成的单位都是px,而实际使用是要求单位为cm或者mm。因此要将生成的棋盘格图片插入word,以获取对应实际单位cm的棋盘格。首先使用opencv制作棋盘格,再调用第三方库python-docx生成word并将图片插入。# -*- coding: utf-8 -*-import ioimport osimport sysfrom docx ..._棋盘格怎么生成

计算机组成原理 | 第一章《计算机系统概论》学习笔记_自考计算机组成原理第一章笔记-程序员宅基地

文章浏览阅读623次。本章主要介绍了计算机的发展史和发展趋势,并对计算机的应用领域有一综合的描述。随后从硬件系统和软件系统的角度介绍了计算机系统的组成结构,着重介绍了五大功能部件以及操作系统的功能。并从层次结构的角度分析了计算机的层次结构。最后就如何衡量计算机的性能做了初步讨论。_自考计算机组成原理第一章笔记

java sql in无效数字_java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字-程序员宅基地

文章浏览阅读772次。### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字### The error may involve com.lecar.user.mapper.StationManageMapper.insertStation-Inline### The error occurred whi..._nested exception is java.sql.sqlsyntaxerrorexception: ora-01722: 无效数字

(1)Docker环境下安装Clickhouse_服务器docker启动clickhouse 如何连接数据库-程序员宅基地

文章浏览阅读1.2k次。我这里设置了~/Devlopment/DockerSoft/clickhouse-server1作为Clickhouse程序在Linux运行下虚拟机中/var/lib/clickhouse的挂载目录,设置这个东西的主要目的是为了文件同步。Docker是一种轻量级的虚拟机,且在官网有镜像,通过安装指定软件的镜像,就可以将该软件的所有依赖一次性安装到虚拟机环境中,省去了我们自己安装虚拟机环境、相关依赖的麻烦。Docker官网:https://www.docker.com/默认用户名:Default。_服务器docker启动clickhouse 如何连接数据库

C#Winform自定义DataGridView 附源码-最终版_c# winfrom datagridview scrollbar-程序员宅基地

文章浏览阅读4.6k次。C#Winform自定义DataGridView 附源码-最终版以下代码可实现这样的效果,不解释了: public partial class PersonalAccountForm : Form { private DataGridView dataGridView = new DataGridView(); private VScrol..._c# winfrom datagridview scrollbar

随便推点

FieldTrip toolbox教程系列(0)-安装、配置与测试_fieldtrip安装-程序员宅基地

文章浏览阅读6.7k次,点赞3次,收藏29次。点击上面"脑机接口社区"关注我们更多技术干货第一时间送达FieldTrip是MEG, EEG, iEEG和NIRS分析的MATLAB软件工具箱。它提供预处理和先进的分析方..._fieldtrip安装

canvas学习做一些记录_canvas 记录-程序员宅基地

文章浏览阅读234次。标签canvas标签用来初始出来一块画布,可以用来绘制处理图形getContext(“2d”)用来绘制2d图形var canvas = document.getElementById('tutorial');var ctx = canvas.getContext('2d');常用的api绘制矩形绘制填充一个矩形fillRect(x, y, width, height)绘制一个矩形的边框 strokeRect(x, y, width, height)清除指定矩形区域,_canvas 记录

解决Hibernate:could not initialize proxy - no Session_could not initialize proxy no session through refe-程序员宅基地

文章浏览阅读8.1k次。/******************************************************************************************************************/ 解决Hibernate:could not initialize proxy - no Session Hibernate单端关联懒加载策略:即在<one-to..._could not initialize proxy no session through refernce

T3出行只争第二,滴滴地位难以撼动?_滴滴打车好还是t3好-程序员宅基地

文章浏览阅读175次。10月26日,T3出行宣布完成A轮融资,此次融资金额为77亿元人民币,本轮融资由中信联合体领投,应通科技、同程旅游、鸿为资本、德载厚资本、一汽、东风汽车、长安汽车、阿里巴巴、腾讯投资跟投。这是自2018年以来网约车行业内最大额度的单笔融资事件。继今年7月滴滴被查下架App之后,网约车行业再次打响补贴战,先是9月份曹操出行融资38亿元,现在又有T3出行融资77亿元。新一轮战事将起之时,为何资本开始流向曹操出行、T3出行这些“第二梯队”选手?后发先至,窗口期中的新变数7月4日,网信中国发布关于下架滴滴出行_滴滴打车好还是t3好

基于Ubuntu+Eclipse+GDB+OpenOCD+STlink搭建STM32开发环境_bingobinlw-程序员宅基地

文章浏览阅读8.5k次,点赞13次,收藏63次。基于Ubuntu+Eclipse+ARMGCC+OpenOCD+STlink搭建STM32开发环境准备工作:一台能够上网的配置还不错的电脑,stm32开发板,stlink下载器。第一步 搭建ubuntu环境 (如果你已搭建好,可忽略);第二部 利用OpenOCD+STlink连接你的开发板;第三部 配置你的eclipse环境;第一步 搭建ubuntu环境准备工作:下载ubu..._bingobinlw

JIRA从6.3.6升级到7.0.0_back up jira home directory-程序员宅基地

文章浏览阅读1.7k次。1.备份原有Jira的db和安装文件,以便回退版本 数据路备份命令: Mysqldump –h(数据库地址) –u(用户名) –p(密码) –P(数据库端口号) (需要备份的数据库名称) > xxx.sql2.下载jira6版本的最高版本,下载地址为https://www.atlassian.com/software/jira/download-archives,文件名为:atl..._back up jira home directory

推荐文章

热门文章

相关标签