Tag: 视图

如何在XCode中轻松创建可重用的Xib

对于应用程序中的视图,拥有一个具有布局的文件和另一个具有逻辑的文件将为您节省很多时间来管理它们。 如果更改设计,则仅修改xib,如果更改逻辑,则仅更改类文件。 这是目标文件夹结构的图像: 我创建了一个存储库,使创建可重用视图非常容易。 另外,如果您想自己解决问题,我还添加了步骤。 使用MSAutoView 创建一个xib文件并向其中添加所需的布局(示例): 2.创建一个swift文件并添加一个从MSAutoView继承的类 MSAutoView具有许多自定义功能,例如以编程方式更新视图,为同一视图具有多个布局,将布局子类化等等。 您可以在这里找到项目: MaherKSantina / MSAutoView MSAutoView –创建可重用视图的简便方法 github.com 如果您发现回购有用,请不要忘了给它加注星标。 高度赞赏合作。 使用自定义解决方案 创建一个xib文件并在其中添加您的自定义布局: 创建一个从UIView继承的类 覆盖init(frame:)和init?(coder:)函数以添加将包含添加xib布局逻辑的函数: 感谢您查看本文。 如果您觉得有用,别忘了👏。

UICollectionView:如何轻松处理更新

使用CollectionViews或TableViews时,困难的部分是需要添加,删除,移动某些单元格或更新其内容时。 使用装饰视图时甚至更多。 介绍 查看以下两个数组: let old = [“ A”,“ B”] let new = [“ B”,“ C”] 这些数组之间的差异非常容易计算: Deleted:[0] //旧数组中的索引 已移动:[(从:1,至:0)] 插入的:[1] //在新数组中的索引 重新加载:[] 要计算此差异,我们使用一个键比较两个数组,在这种情况下,这是数组中的值。 使用key,我们可以计算move , delete和inserts 。 删除了位置0的键A 钥匙B从位置1移到位置0 键C插入位置1 当我们要计算两个数组之间的重载索引时,它变得更加复杂。 我们还需要一个key和一个值。 如果值更改,我们需要重新加载该项目。 let old = [(键:“ A”,值:0),(键:“ B”,值:0)] let new = [(键:“ C”,值:0),(键:“ B”,值:1)] 差异的结果: 已删除:[0] //键A已删除 感动:[] 插入:[0] //插入键C 重新加载:[1] // B的值已更改 […]

Criando“ CardView”没有iOS。

不能使用任何材料设计或CardView演示 。 可以在Android平台上进行预览,也可以在可视化界面上进行可视化设计,也可以在iOS上进行材质设计,也可以在iOS上使用CardViews进行建模。 Os camposnãoprecisãode muitaexplicação。 Podemos definir o arredondamento das bordas,一个cor,opacidade,deslocamento e tamanho da sombra ea espessura e cor da borda。 Umaatençãomaior deve ser dada apenas aos campos: 图层背景颜色 :定义背景图和视图。背景图和图层。 启用Bezier路径 :在栅格遮罩中的路径。 面具绑定 :Precisamos dessa propriedade desativada para que a Sombra possa ser desenhada。 栅格化 :精确地重新计算栅格数据。 从记忆中查看蒙脱利亚的图像。 重要提示和建议,处理或取消您在拉多(lao,oãouso)的使用情况。

控制器和视图

我喜欢用代码编写UI,并且使用“自动布局”功能很容易。 但是,这给ViewController留下了大量代码。 我们可以做的一种方法是通过使用专用视图在MVC中将V与C分开。 感谢我的朋友Vadym向我展示了它。 我们可以使用generic来做到这一点,即初始化一个视图并替换该view ,我们称其为root 导入UIKitclass BaseController :UIViewController { 让root = T()覆盖func loadView(){ 视图=根 } } 现在我们可以有一个UIView子类,例如LoginView 最后一课LoginView:UIView { 惰性var textField:UITextField = UITextField()。然后{ $ 0.textAlignment = .center $ 0.borderStyle = .roundedRect $ 0.keyboardType = .phonePad }懒惰的var按钮:UIButton = UIButton()。然后{ $ 0.setTitleColor(.black,for:.normal) $ 0.backgroundColor = .lightGray }覆盖init(框架:CGRect){ super.init(frame:frame)addSubviews( 文本域, 纽扣 )约束 textField.centerXAnchor.constraint(equalTo:textField.superview!.centerXAnchor), textField.centerYAnchor.constraint(equalTo:textField.superview!.centerYAnchor), textField.widthAnchor.constraint(等于:textField.superview!.widthAnchor,常数:-20),button.topAnchor.constraint(equalTo:textField.bottomAnchor,常数:20), button.centerXAnchor.constraint(equalTo:button.superview!.centerXAnchor), button.widthAnchor.constraint(equalTo:textField.widthAnchor,乘数:0.8), […]

Swift实用程序:视图实例化变得容易

我将在本节中介绍一系列文章,以创建实用程序类/函数,这些类/函数在开发过程中会很方便,让我们从视图实例化开始 在iOS应用程序开发期间,它是实例化视图的常见用例 通常我们可以通过3种方式实例化视图 使用XIB实例化 使用情节提要实例化 以编程方式创建视图并添加约束 最后一个超出了本文的范围。 使用XIB实例化 我们必须从主捆绑包实例化xib并加载它。 在这种情况下,代码将如下所示 使用情节提要实例化 在这里,我们实例化情节提要,然后使用其标识符加载viewController。 样本可以看如下 因此,上述实现非常完美,唯一的缺点是每次需要实例化新的viewcontroller时,都必须在代码行上方复制粘贴。 一种更简单的方法可能是概括上述方法以获取有关传递可变参数的视图 继续进行下去,我们可以概括上述方法,这样就不必在每次需要实例化视图时都复制粘贴相同的代码。 请从我尝试执行的以下仓库中导入代码。 pshrinivas / ViewInstantiable 方便快捷地实例化iOS视图的实用方法– pshrinivas / ViewInstantiable github.com 在这一步骤之后,实例化视图将是小菜一碟。 视图实例化可以如下进行 使用xib进行实例化:遵循以下可实例化的协议以查看或具有xib和view的viewcontroller 使用情节提要进行实例化:将情节提要协议与ViewController一致,并将情节提要名称作为参数传递 PS: 对于使用上述回购文件名,类名,XIB名称,应保持相同,否则将不起作用。 类似的标识符与故事板中的类名相同 因此,这种方式可以在很大程度上减少冗余代码。 请对此发表您的看法。 编码愉快!!! 感谢Ganesh&Karthik的校对。 现在我们知道任何错别字应归咎于谁