算术操作符
//GeometryReader占更多位置,得添加别的view
GeometryReader { geometry in
RoundedRectangle(cornerRadius: 2)
.foregroundColor(.red)
.frame(width: 30, height: 4)
//偏移屏幕宽度的一半加推荐两个字宽度的一半
// .offset(x: UIScreen.main.bounds.width * 0.5 * (self.leftPercent - 0.5) + kLabelWidth * CGFloat(0.5 - self.leftPercent))
//geometry.size.width的宽度,0:geometry的一半;1:
.offset(x: geometry.size.width * (self.leftPercent - 0.5) + kLabelWidth * (0.5 - self.leftPercent))
}
范围操作符
//在init方法创建UserData的时候先初始化两个字典,UserData一创建recommendPostDic,hotPostDic这两个字典九已经更新好了,包含了每条微博的ID及它在数组里的序号
init() {
//推荐列表的元素个数,每次取出一个元素赋值给i然后执行花括号里的命令,i是推荐列表的数组的序号
for i in 0..<recommendPostList.list.count {
//数组取下标更新微博
let post = recommendPostList.list[i]
//key是微博的ID(post.id),value是微博在数组里的序号i
recommendPostDic[post.id] = i
}
for i in 0..<hotPostList.list.count {
let post = hotPostList.list[i]
hotPostDic[post.id] = i
}
}
三元操作符
//点赞按钮
PostCellToolbarButton(
image: post.isLiked ? "heart.fill" : "heart",
text: post.likeCountText,
color: post.isLiked ? .red : .black
){
if post.isLiked {
post.isLiked = false
post.likeCount -= 1
} else {
post.isLiked = true
post.likeCount += 1
}
//更新userdata
self.userData.update(post)
}
switch
let weather = "晴天"
switch weather {
case "多云":
print("多云")
fallthrough
case "晴天":
print("晴天")
fallthrough
case "冰雹":
print("冰雹")
fallthrough
case "台风":
print("台风")
fallthrough
case "闪电":
print("闪电")
default:
"这就今天的天气!"
}
输出 :
晴天
冰雹
台风
闪电
- fallthrough 如果当前case为true,后面有case会继续执行紧跟着那条case,不管那个case对不对都当它为true。如果后面还有fallthrough则继续像这样执行。
- switch 和枚举有点像,都有case,不过switch必须要有default?或者直接把case都写完整
enum PostListCategory {
case recommend, hot
}
网友评论