SwiftUI-制作一个简易排序GridView
来源: https://stackoverflow.com/questions/62606907/swiftui-using-ondrag-and-ondrop-to-reorder-items-within-one-single-lazygrid
本文主要使用到了onDrag和onDrop方法,此外还有类似的onInsert
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114//// SwiftUIView.swift// Demo//// Created by Zr埋 on 2020/12/1.//import SwiftUIimport UniformTypeI ...
UIKit-在UIKit中使用SwiftUI视图
来源: https://www.avanderlee.com/swiftui/integrating-swiftui-with-uikit/
在HWS中学到了怎么在SwiftUI中使用UIKit,那么快来学一下怎么使用SwiftUI吧
在SwiftUI中定义了一个Controller名字叫UIHostingController,介绍就是A UIKit view controller that manages a SwiftUI view hierarchy.
那就直接拿来用就行,使用Push或者Present都是可行的。
这里先创建了一个SwiftUIView
123456func presentSwiftUIView() { let swiftUIView = SwiftUIView() let hostingController = UIHostingController(rootView: swiftUIView)// present(hostingController, animated: true, completion: nil) ...
LeetCode-202011
34. 在排序数组中查找元素的第一个和最后一个位置 - 20201201
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
进阶:
你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?
如果两边找,那很简单,可惜是个O(n),二分找,则为O(logn)
分头行动
12345678910class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: if len(nums) == 0: return [-1, -1] i, j = 0, len(nums)-1 while i < len(nums) and nums[i] != target : i+=1 while nums[j] != target and j > ...
UIKit-造一个小轮子SelctionView(一)
成品图
首先可以看出是使用UICollectionView为基础构建的,我们先声明一个View继承自UICollectionView,并且遵循UICollectionViewDelegate和UICollectionViewDataSource
123class SelectionView: UICollectionView, UICollectionViewDelegate, UICollectionViewDataSource { }
然后声明一些基础的需要用到的常变量
123456private let cellId = "SELECTION_VIEW_CELL_ID" // Cell 注册IDprivate var selectedIdx: Int = -1 // -1 则为不选择private var data: [String] // 数据private var callBack: ((Int)->Void)? // 回调函数// 是否能够取消选择var allowsCancelSelection: Bool = false ...
LeetCode-202011
140. 单词拆分 II - 20201101
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。
说明:
分隔时可以重复使用字典中的单词。
你可以假设字典中没有重复的单词。
写了一个递归。。但是超时了
1234567891011121314151617181920212223242526272829class Solution {public: vector<string> ret; int noWhitespaceStrLen(string s) { int ret = s.length(); for (auto x : s) if (x == ' ') ret--; return ret; } void recur(int start, int end, const string& s, const set<string>& wordDic, string cur) ...
从零开始打造自己的linux终端环境
0x00 apt进行换源
12345678910111213141516171819sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup #做好备份sudo vi /etc/apt/sources.list #进行编辑#在最前面加上# 阿里源deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse ...
LeetCode-202010
LCP 19. 秋叶收藏集 - 20201001
小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。
出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完毕
正值双节,力扣来了个开幕雷击,这种题还是有难度,从题解来分析吧。
动态规划
题解中有提到一个词 - 示性函数,其实就是一个结果为二元的函数,或者说布尔函数,这个问题不大,主要是对状态的分析,题解使用了f[i][j]来存储状态,最后取f[n-1][2]来作为return。
其中j可以为0、1、2,分别表示头部的红、中间的黄、和尾部的红,然后对每个j进行分析
j == 0,这个是最简单的,只需要把第i片叶子变成红色,题解的说明可能不太明了,其实这时候的意思是,f[i][j]是如果第i片叶子应该是 ...
UIKit-Shadow and CornerRadius
to use both effects
123self.contentView.layer.cornerRadius = 5self.contentView.layer.masksToBounds = trueself.contentView.addShadow(.black, sRadius: 1, sOpacity: 0.3, offset: (1, 1))
and addShadow in layoutSubviews function
1234567891011func addShadow(_ sColor: UIColor, sRadius: CGFloat, sOpacity: Float, offset: (CGFloat, CGFloat), for changedRect: CGRect = .zero) { let rect = changedRect == .zero ? self.bounds : changedRect self.layer.shadowColor = sColor.cgColor self.layer. ...
UIKit-ShadowDrawing Bug
bug I meeted: use self.addShadow(.black, sRadius: 2, sOpacity: 0.2, offset: (-1, -1)) not works, addShadow is below
12345678910func addShadow(_ sColor: UIColor, sRadius: CGFloat, sOpacity: Float, offset: (CGFloat, CGFloat), for changedRect: CGRect = .zero) { let rect = changedRect == .zero ? self.bounds : changedRect self.layer.shadowColor = sColor.cgColor self.layer.shadowRadius = sRadius self.layer.shadowOpacity = sOpacity // 设置 shadowOffset 会产生离屏渲染 // self. ...