1.在swift中一个问好?结尾意思是前面的变量是可以为空的
2.如果text里面的内容显示的很多要限制行数使用linelimit后面跟行数多出去的自动变成三个点的省略号
3.设置成盒子拥有宽高我们用frame
4.获取手机宽度UIScreen.main.bounds.width
5.从后台来的blob流关键解析
let _this = this
let webURL = window.location.origin
_this.$send.get({
url: webURL + '/api/student/admin/export?name=' + _this.name,
responseType: 'blob'
}, res => {
const content = res
const blob = new Blob([content], { type: 'application/ms-excel' })
var date =
new Date().getFullYear() +
'' +
(new Date().getMonth() + 1) +
'' +
new Date().getDate() +
'' +
new Date().getHours() +
'' +
new Date().getMinutes() +
'' +
new Date().getSeconds() +
'' +
new Date().getMilliseconds()
const fileName = date + '.xlsx'
if ('download' in document.createElement('a')) {
// 非IE下载
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
} else {
// IE10+下载
navigator.msSaveBlob(blob, fileName)
}
})
然后请求里面一定要加入responseType
axios({
method: defaults.method,
url: defaults.url,
data: defaults.method === 'POST' || defaults.method === 'PUT' ? defaults.data : null,
params: defaults.method === 'GET' || defaults.method === 'DELETE' ? defaults.data : null,
headers: defaults.headers,
baseURL: defaults.baseURL,
responseType: defaults.responseType
})
这个responseType一定要加不然必乱码
1.uikit里面的uiscrollView
在一个uiscrollView中每一个view在外面都可以用一个矩形框起来这个view的坐标系就是以矩形的左上角作为原点水平方向向右就是x轴的正方向向下就是y轴的正方向
我们描述一个子view与一个父view关系通过子view原点与父view原点之间的位置来描述
2.CGRect
a)子view相对于父view的x值y值和自身宽高组成一个结构体CGRect
b)我们给CGRect这四个变量形成的结构体添加一个属性frame,frame属性是什么就是它相对于父view的坐标体系下的相对位置和自身的大小
3.uiscrollView
a)是一个可以滑动的scrollview,它里面展示的内容要超出它本身的大小它本身的大小
b)比如说我在uiscrollview里面展示了一张超大的图片里面的内容叫做content这张超大图片的宽高就是contentSize.height和contentSize.width
c)那么这时候里面的内容比scrollview要大那么就会产生一个相对位置那么就有了超大图片的左上方原点相对与scrollview的原点的相对位置那么内容原点距离scrollview原点的竖直方向位置就是contentOffset.y,contentOffset.x就是水平方向的位置
4.在uikit里面除了datamodel和view以外还有一个viewcontroller,viewcontroller可以理解为它是一个页面又一个页面就有一个viewcontroller,
5.viewController有一个属性叫做view,他就是这个页面最根部的视图
6.这个view加载好了以后viewDidLoad这个函数就会被执行我们通常在这个函数里面把其他函数的子view加到Viewcontroller的view上面
7.判断是否安装了java
8.第一次用bash_profile配置环境变量的时候要先在~根目录里面t
a)创建touch .bash_profile
b)打开bash_profle 使用命令:open .bash_profile
c)然后进行配置
export JAVA_HOME=/Library/Java/本机安装jdk位置路径
xport CLASSPAHT=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOME/lib/dt.jar:
JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
~
d) 然后保存
e) 最后一定要输入source .bash_profile才会生效配置
9.如何校验java是否安装成功输入java 输入javac 输入java --version都可以
10.如何安装dart sdk
a)将dart-sdk放进应用程式里面然后open .bash_profile
b)然后添加export PATH=
P
A
T
H
:
/
A
p
p
l
i
c
a
t
i
o
n
s
/
d
a
r
t
−
s
d
k
/
b
i
n
c
)
然
后
查
询
版
本
d
a
r
t
−
−
v
e
r
s
i
o
n
11.
如
何
安
装
f
l
u
t
t
e
r
a
)
解
压
f
l
u
t
t
e
r
安
装
包
b
)
然
后
放
入
应
用
程
式
c
)
然
后
o
p
e
n
.
b
a
s
h
p
r
o
f
i
l
e
d
)
然
后
加
入
一
下
国
内
镜
像
e
)
e
x
p
o
r
t
P
U
B
H
O
S
T
E
D
U
R
L
=
h
t
t
p
s
:
/
/
p
u
b
.
f
l
u
t
t
e
r
−
i
o
.
c
n
f
)
e
x
p
o
r
t
F
L
U
T
T
E
R
S
T
O
R
A
G
E
B
A
S
E
U
R
L
=
h
t
t
p
s
:
/
/
s
t
o
r
a
g
e
.
f
l
u
t
t
e
r
−
i
o
.
c
n
g
)
e
x
p
o
r
t
P
A
T
H
=
{PATH}:/Applications/dart-sdk/bin c)然后查询版本dart --version 11.如何安装flutter a)解压flutter安装包 b)然后放入应用程式 c)然后open .bash_profile d)然后加入一下国内镜像 e)export PUB_HOSTED_URL=https://pub.flutter-io.cn f)export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn g)export PATH=
PATH:/Applications/dart−sdk/binc)然后查询版本dart−−version11.如何安装fluttera)解压flutter安装包b)然后放入应用程式c)然后open.bashprofiled)然后加入一下国内镜像e)exportPUBHOSTEDURL=https://pub.flutter−io.cnf)exportFLUTTERSTORAGEBASEURL=https://storage.flutter−io.cng)exportPATH={PATH}:/Applications/flutter/bin
h)最后验证flutter flutter doctor
12.Swift里面的tabbar图标如何变小那就是多少倍图就放在倍图那里
13.给一个盒子背景颜色直接
a).background(Color(red: 249 / 255, green: 250 / 255, blue: 250 / 255))
14.计算手机屏幕宽度:UIScreen.main.bounds.width
15.[!] No Xcode project found, please specify one
不要着急,重新cd到项目目录下,一定要确保有xxxx.xcodeproj文件再次执行,成功后你会在你的项目目录里面看到一
16.关于为什么安卓手机点击输入框弹出输入框然后飞到最上的bug
关键的原因是为什么飞,明明输入框是使用了position:fixed;left:0;right:0;bottom:0;这个时候盒子就会自动在软键盘弹起来的时候跟在软件盘上面根据原理就是贴着高,但是由于我使用了scrollView所以高填了一个固定高度所以要改成min-height,但是正常页面不需要加上min-height
17.一个optional的变量要掉用它的属性或者函数需要在后面加上问好?或者叹号然后才可以调用 加叹号表示这个optional的属性一定不为空,如果为空的话执行到这一步就会闪退报错,加问号就表示这个属性可以为空,如果是空的话返回值就是nil
18.如何限制左右横屏找到info.plist去掉supported interface orientations里面的删除除了Portrait竖屏以外的
19.如何限制左右横屏找到info.plist去掉Supported interface orientations (iPad)里面的删除除了Portrait竖屏以外的
20.SwiftUI按钮Button和Tap的区别Button点下去的时候颜色会变浅Tap点下去的时候不会有任何变化
21.Divider分割线
22.矩形用rectangle圆角矩形用RoundedRectangle,圆角矩形的圆角半径等于圆角矩形高度的一半圆角矩形的左右两边正好是两个半圆
23.Group是一个分组我们要显示多个自动预览页的时候可以把多个自动预览页放进Group里面或者我们显示某个view有条件的时候如果某个条件成立才显示可以把if整个条件语句放进group里面
24.GeometryReader:GeometryReader是一个view他和spacer相同点是会尽量扩张自己尽可能的多占空间他和VStack相同之处在于上面要添加其他view它本生的特点在于可以获取自己的宽高
25.一个常量是不会改变的它可以在多个线程里面共享,不会有线程去修改它的值
26.如何检验CocoaPods是否安装成功在终端输入是pod
27.要想在每一个项目里面使用依赖就要找到该文件夹的指定目录使用CocoaPods然后使用init初始化生成一个profile文件,生成以后我们需要做的就是在profile文件里面安装我们需要的依赖
28.如何安装依赖呢终端有一个默认的文本编辑器vim也可以用它的缩写vi打开以后target和end之间需要我们写上我们依赖库的版本信息就是版本号一进来是阅读模式只需要按一下键盘上的i就变成编辑模式最后一行会变成insert如何退出保存只需要按esc键退出然后如果我们是在普通阅读的情况下那么就是直接冒号按q就直接退出了如果要保存的话就是冒号加wq就能保存修改
29.编辑好profile里面的依赖然后就可以在外面终端来pod install命令安装依赖
30.如何查看Homebrew是否安装成功终端输入brew就可以出现了
31.然后发现pod install 报错原因如下
32./System/Library/Frameworks/Ruby.framework/Versions/2.6/otp/hombrew/ruby/2.6.0/universal-darwin20/rbconfi
这个原因是没有配置ruby的环境变量
#ruby2.7.0
export PATH="/usr/local/opt/ruby/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
33.superview 父视图 subview子视图
34.向下类型转换:就是Any类型范围比AnyObeject大使用as?语句就可以向下类型转换