UI基础

2018-11-07  本文已影响0人  夜雨聲煩_

NavigationBar

基本设置
遮挡底部视图的情况

设置under top bars 属性为no
或者配合其中控件使用自适应高度属性
webView.autoresizingMask = [.flexibleHeight]

配合StoryBoard转场传值
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        let dest = segue.destination as! DetailTableViewController
        dest.area = self.areas?[self.tableView.indexPathForSelectedRow!.row]
    }
}![245d3a2e55f700e16b56434ecd09c81.png](https://img.haomeiwen.com/i5687317/4cb295dfef817461.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

注意:关于segue的两个属性。destination为目的,表示将要跳转的页面。source为源,表示来自的页面。注意两者区别。

配合StoryBoard反向转场

关联反向转场方法。在此方法中执行转场回到源视图时执行的方法,以及传值。类似于OC中点击下一页面按钮在源视图中的block回调。

@IBAction func closeReview(segue:UIStoryboardSegue) {

}

StoryBoard

拆分与引用

选中想要拆分的SB
editor->refactor to storyboard
使用新名字来创建新的SB

额外视图

将控件例如spinner拖入顶部exit左侧,然后与对应控制器相关联。利用代码控制spinner的出现及隐藏等行为。

图片

虚化效果
//创建虚化效果:light,dark等不同亮度虚化特效
let effect = UIBlurEffect(style: .light)
//使用u虚化效果创建特效视图
let effectView = UIVisualEffectView(effect: effect)
//指定特效视图尺寸
effectView.frame = view.frame
//将特效视图覆盖在原视图上,实现虚化效果
bgImageView.addSubview(effectView)

按钮

背景色及前景色

原图为透明黑色图案。
设置背景色(backgroundColor)红色,设置前景色(tintColor),设置按钮样式(type)为system,效果为:

image.png
注意systemtintColor搭配使用
Xib中指定layer.cornerRadius来在运行时动态设定圆角。
image.png

Xib约束

TableView

动画

震荡动画
@available(iOS 7.0, *)
//usingSpringWithDamping: 震荡时间
//initialSpringVelocity:初速度
open class func animate(withDuration duration: TimeInterval, delay: TimeInterval, usingSpringWithDamping dampingRatio: CGFloat, initialSpringVelocity velocity: CGFloat, options: UIView.AnimationOptions = [], animations: @escaping () -> Void, completion: ((Bool) -> Void)? = nil)
组合动画

使用concatenating组合多个CGAffineTransform

//位移+放大
let startPosition = CGAffineTransform(translationX: 0, y: 500)
let startScale = CGAffineTransform(scaleX: 0, y: 0)
reviewStackView.transform = startScale.concatenating(startPosition)

UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.5, options: [], animations: {
    let endPosition = CGAffineTransform(translationX: 0, y: 0)
    let endScale = CGAffineTransform.identity
    self.reviewStackView.transform = endScale.concatenating(endPosition)
    
}, completion: nil)

注意:放大组合位移有效果,反之没效果。可能是bug

其他

Swift与OC混编

在导入OC第三方库的时候,新建一个.m的OC文件,系统会自动提示是否使用桥接。选择使用后系统会直接创建桥接文件,创建好后删除刚刚自己创建的.m文件。
然后在系统的桥接文件中导入#import <AVOSCloud/AVOSCloud.h>
编译成功即可。
如果提示找不到
build Seting 搜索:User Header Search Paths
添加:${SRCROOT} , 选择Recursive
桥接文件中改为#import "AVOSCloud/AVOSCloud.h"

LeanCloud

使用LeanCloud进行云端网络配置和操作。

  1. 授权
    授权成功会打印lean cloud logo
上一篇下一篇

猜你喜欢

热点阅读