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. ...
羊城杯-Reverse-WP
Login
进去看到一个py打包的exe,直接用2.0的pyinstxtractor可以直接拖出来,然后uncompyle解密得到脚本
123456789101112131415161718192021222324252627282930import sysinput1 = input('input something:')if len(input1) != 14: print('Wrong length!') sys.exit()else: code = [] for i in range(13): code.append(ord(input1[i]) ^ ord(input1[(i + 1)])) code.append(ord(input1[13])) a1 = code[2] a2 = code[1] a3 = code[0] a4 = code[3] a5 = code[4] a6 = code[5] a7 = code[6] a8 = code ...