Tag: 自定义Ui

Swift:基于UIStackView的网格布局

我们的目标是获得具有可变单元格数量的可重用网格组件。 让我们为网格准备一个容器。 请注意,此实现不支持滚动,要启用垂直滚动,您将需要使用UIScrollView包装网格。 为了让我们的网格动态调整大小,我们需要跟踪其中的当前单元格数量。 我们还需要知道一行可以包含多少个单元(一行的大小)以及网格单元的高度。 每当当前行超过其大小时,我们都将开始一个新行。 让我们看一下prepareRow()函数。 网格中的每一行都由一个水平的堆栈视图表示,并且由于我们希望所有像元具有相同的宽度,因此分配模式设置为fillEqually 。 为了向网格中添加新的单元格,我们将使用一个实例函数(我们也可以将一个单元格数组传递给GridComponent ”函数,这将是一种更美观的方法,但是在此实现中将省略它)。 我们的GridComponent几乎准备就绪。 但是我们仍然需要解决一个小问题。 我们在这里使用的水平堆栈视图具有fillEqually分布模式,并且如果最后一行中的单元格数量小于行的大小,则最后一行中的单元格将以不同的方式分布。 一种解决方案是使用伪造的单元格填充最后一行。 我们可以使用一个简单的UIView ,但是如果需要的话,我将创建FakeCell类来区分假单元格和网格中的实际单元格。 addCell函数的最终实现将如下所示: 现在我们完成了。 但是对于具有大量单元格的网格,我仍然建议使用UICollectionView来提高性能。 感谢您的阅读,如果您发现这篇文章对您有帮助,请别忘了鼓掌!

使用Swift在iOS中创建自定义进度栏

当我开始开发自己的iOS应用程序时,经常会遇到需要自定义某些内置UI元素以满足应用程序需求的需求。 对我来说,其中一个就是自定义进度条 。 在本文中,我将介绍构建自定义进度栏的基础知识。 首先,有助于了解内置的UIProgressView。 当我说理解时,我指的是XCode的“属性”检查器中显示的关键属性,例如“ 进度”,“跟踪”和“进度”值 。 进度色 -用于前景层以显示进度。 跟踪色调 —在背景层中使用,以显示进度条的轮廓。 进度值 -保持当前进度状态的指针值 让我们开始构建自定义进度栏部分。 要求是创建一个圆形进度栏。 在自定义视图中使用UIBezierPath()创建路径。 创建两个CAShapeLayer- 一个用于前景,另一个用于背景。 通过操纵StrokeEnd值设置进度。 类声明如下所示: class ProgressBarView:UIView { var bgPath:UIBezierPath! var shapeLayer:CAShapeLayer! var progressLayer:CAShapeLayer! } UIBeizerPath使您可以通过添加一组线,弧,曲线并将其渲染到自定义视图中来创建从简单路径到复杂多边形的所有内容。 因此,首先使用它定义进度条的路径。 对于我们的示例,我创建了一个循环路径。 私人功能createCirclePath(){ 令x = self.frame.width / 2 令y = self.frame.height / 2 让中心= CGPoint(x:x,y:y) bgPath.addArc(withCenter:center,radius:x / CGFloat(2),startAngle:CGFloat(0),endAngle:CGFloat(6.28),顺时针:true) bgPath.close() } 我已使用addArc()方法绘制一个圆,将startAngle和endAngle参数指定为弧度 。 其他方法(如addLine(),addCurve(),addQuadCurve())也可以用于创建路径。 […]