【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验
<blockquote><p>最近在学iOS开发,本系列会针对iOS从前到后的开发进行全面讲解,小到开发工具使用,大到应用市场上线。</p>
</blockquote>
<p><img src="http://cdn.jayh.club/blog/20200721/71TWchflGEFs.png?imageslim" alt="本篇思维导图" loading="lazy"></p>
<p><strong>需求:</strong></p>
<pre><code class="language-json">1.显示一个橘黄色矩形
2.矩形上面一个按钮可以点击,并有响应事件
3.界面中心显示一张图片
</code></pre>
<p><strong>系统版本:</strong></p>
<pre><code>Mac OS 版本:10.15.5
Xcode版本:11.5
</code></pre>
<h1 id="一创建demo项目">一、创建demo项目</h1>
<h2 id="11-选择创建一个xcode-project">1.1 选择创建一个Xcode Project</h2>
<p><img src="http://cdn.jayh.club/blog/20200721/aDPmc8F2084r.png?imageslim" alt="mark" loading="lazy"></p>
<h2 id="12-选择single-view-app">1.2 选择Single View App</h2>
<p><img src="http://cdn.jayh.club/blog/20200721/eb6RAsjhot0X.png?imageslim" alt="mark" loading="lazy"></p>
<h1 id="二代码实现">二、代码实现</h1>
<h2 id="21-程序入口说明">2.1 程序入口说明</h2>
<p>Application/AppDelegate.swift文件中的@UIApplication注解,表示这个Class类是程序的入口<br>
<img src="http://cdn.jayh.club/blog/20200721/2Oey6akOG2LK.png?imageslim" alt="mark" loading="lazy"></p>
<h2 id="22-代码结构说明">2.2 代码结构说明</h2>
<p>所有方法放到一个{}中,并有缩进。</p>
<p>和Java编码格式非常相似。</p>
<h2 id="23-功能实现">2.3 功能实现</h2>
<h3 id="231-创建一个视图添加一个黄色矩形">2.3.1 创建一个视图,添加一个黄色矩形</h3>
<pre><code class="language-swift">import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// 1.创建一个视图
let v = UIView(frame: CGRect(x:0, y:0, width: 100, height: 100))
// 2.设置背景颜色
v.backgroundColor = UIColor.yellow
// 3.添加到当前视图
view.addSubview(v)
}
}
</code></pre>
<p>效果如下所示:一个黄色矩形在左上角</p>
<p><img src="http://cdn.jayh.club/blog/20200721/5WzNRAphYhOY.png?imageslim" alt="效果图" loading="lazy"></p>
<h3 id="232-添加一个按钮并添加按钮点击事件的监听方法">2.3.2 添加一个按钮,并添加按钮点击事件的监听方法</h3>
<pre><code class="language-swift">// 2.创建一个按钮
let btn = UIButton(type: .contactAdd)
// 2.1 添加到当前视图
v.addSubview(btn)
// 2.2 添加点击事件
btn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
// 2.3 btnClick事件方法输出日志
</code></pre>
<p>效果如下所示,一个按钮在左上角,点击按钮将会输出日志</p>
<p><img src="http://cdn.jayh.club/blog/20200721/1CFma3PflxKU.png?imageslim" alt="效果图" loading="lazy"></p>
<h3 id="233-添加一个图片">2.3.3 添加一个图片</h3>
<pre><code class="language-swift">// 3.1 添加一个图片
let iv = UIImageView(image: #imageLiteral(resourceName: "2.jpeg"))
// 3.2 添加到视图
iv.center = view.center
</code></pre>
<p>图片的资源路径可以通过代码添加,也可以通过工具添加<br>
<img src="http://cdn.jayh.club/blog/20200721/sg1uTF0QerVm.png?imageslim" alt="工具添加资源路径" loading="lazy"></p>
<p>效果如下所示,图片会显示在屏幕中间。<br>
<img src="http://cdn.jayh.club/blog/20200721/1U8qQ48uN0I7.png?imageslim" alt="效果图" loading="lazy"></p>
<h1 id="三上述示例swift与object-c的语法对比">三、上述示例swift与object-c的语法对比</h1>
<h2 id="31-创建视图类比">3.1 创建视图类比</h2>
<pre><code class="language-swift">- Swift: UIView(XXX:)
- OC: [ initWithXXX:]
类名() == alloc / init 等价
</code></pre>
<h2 id="32-类方法类比">3.2 类方法类比</h2>
<pre><code class="language-swift">Swift: UIColor.yellow
OC:
</code></pre>
<h2 id="33-访问当前对象的属性类比">3.3 访问当前对象的属性类比</h2>
<ul>
<li>
<p>建议:都不使用<code>self.</code>。当编译器提示的时候,再添加,会对语境有更好的机会;</p>
</li>
<li>
<p>原因:闭包(类似于 OC block)需要使用self。</p>
</li>
</ul>
<h2 id="34-不需要">3.4 不需要<code>;</code></h2>
<p>除非多行代码语句写在同一行中。</p>
<h2 id="35-枚举类型-type对比">3.5 枚举类型 type对比</h2>
<pre><code class="language-swift">Swift:`type: .contactAdd`
OC: UIButtonType.ContactAdd
</code></pre>
<h2 id="36-监听方法对比">3.6 监听方法对比</h2>
<pre><code>Swift: #selector,如果带参数,不需要使用`:`
OC: @selector
</code></pre>
<h2 id="37-调试对比">3.7 调试对比</h2>
<ul>
<li>Swift: print(xxx) 效率高,log中不包含时间,用#function来打印当前执行的方法</li>
<li>OC: NSLog,用__FUNCTION__ 来打印当前执行的方法</li>
</ul>
<h1 id="四注释的妙用">四、注释的妙用</h1>
<p>当我们想标注某段代码是需要refine的,我们可以添加注释标签:<code>TODO</code>。</p>
<p>如下图所示,我在注释中添加了<code>MARK</code>、<code>TODO</code>、<code>FIXME</code>标签前缀,这些特殊标记的锚点菜单将会显示在导航栏上,点击菜单即可跳转到对应注释的地方,非常方便。</p>
<p><img src="http://cdn.jayh.club/blog/2020-07-21-081221.png?imageView2/0/interlace/1/q/75%7Cwatermark/2/text/5oKf56m66IGK5p625p6E/font/5qW35L2T/fontsize/720/fill/I0Y3MjExNA==/dissolve/70/gravity/SouthEast/dx/20/dy/10" alt="注释标签" loading="lazy"></p>
<p><img src="https://user-gold-cdn.xitu.io/2020/7/22/173722794aaedad5?w=298&h=187&f=png&s=78151" alt="mark" loading="lazy"><br>
关注后有福利:Java面试小程序、111本架构师资料</p><br><br>
来源:https://www.cnblogs.com/jackson0714/p/iOS1.html
頁:
[1]