Tag: 自定义

使用Swift在iOS中构建通用框架

我已经搜索了很多可靠的资源,这将有助于我在iOS上构建自定义通用框架。 我尝试实现多种技术,但它们并没有帮助我完成任务。 寻求和阅读很多东西有助于我了解更多有关它的知识,最终我建立了一个通用框架。 我想分享我如何轻松构建此框架, 创建可可触摸框架: 打开Xcode, 文件→新建→项目 。 在iOS下,选择Framework&Library,然后选择Cocoa Touch Framework,然后单击“下一步”。 输入您的框架名称,然后单击“下一步” 。 然后选择您的项目位置并创建项目。 选择您的项目,选择目标→项目名称→选择构建设置选项卡。 在构建框架之前,始终将“启用位码”设置为“是” 。 在项目中构建所需的功能。 如果需要,您可以维护多个情节提要。 Framework项目看起来像一个普通的SPA项目,唯一的区别是您只能编译/构建Framework,而实际上不能在同一项目中运行它们。 如果项目仅在“ Simulator”中构建,则它将生成使框架专门在模拟器而非设备上运行的体系结构。 或者,如果项目是在“设备”中构建的,则它将生成使框架仅在设备上运行的体系结构。 因此,在“ Simulator”和“ Device”上都构建项目。 该框架将在“ 产品”文件夹中生成。 该框架将在项目的产品目录中生成,该产品目录具有两个单独的独特框架文件夹,这些文件夹将分别在Simulator和Device上运行。 设备框架:它包含仅为物理设备构建的体系结构。 模拟器框架:它包含仅为模拟器构建的体系结构。 从开发人员的角度来看,开发人员希望获得一个同时在模拟器和Device上运行的通用框架 。 大多数“流行”框架都是作为通用框架构建的,例如Mixpanel,Fabric等, 我写了一个“运行脚本”来生成通用框架。 选择项目目标→编辑模式→归档→后操作→按“ +”→“新建运行脚本操作” 。 UNIVERSAL_OUTPUTFOLDER = $ {BUILD_DIR} / $ {CONFIGURATION}-通用 #确保输出目录存在 mkdir -p“ $ {UNIVERSAL_OUTPUTFOLDER}” #接下来,计算出我们是否在SIM卡或DEVICE中 xcodebuild -target“ $ {PROJECT_NAME}”-配置$ […]

创建一个自定义UISlider

介绍 这篇博客文章描述了自定义UISlider的创建,该UISlider具有默认滑块的一些附加功能。 我们将使用的类是UISlider,它是UIKit的一部分。 它是一种视觉控件,用于从连续的值范围中选择一个值。 先决条件 首先,我们需要已经对面向对象的概念有所了解,并且需要了解Objective-C语言。 硬件:我们需要有一台Mac,这是iOS开发的基本要求。 软件:要开始开发iPhone和iPad应用程序,Xcode是我们唯一需要的工具。 Xcode是Apple提供的集成开发环境(IDE),它提供了我们启动应用程序开发所需的一切。 默认UISlider的概述: UISlider由各种元素组成,例如轨道 -它为我们提供了一系列可供选择的值, 拇指 -这是一个旋钮,可帮助我们在轨道上滑动所需的值。 移动滑块的拇指时,会将其更新后的值传递给附加的任何操作。 滑块的外观是可配置的; 您可以为轨迹和拇指着色,并提供要显示在滑块末端的图像(minimumValueImage和maximumValueImage)。 您可以通过编程方式或使用Interface Builder将滑块添加到界面中。 让我们从创建演示项目开始。 1.创建一个新的Xcode 8项目 我们将为演示目的创建一个Single View应用程序 。 2.将UISlider添加到视图 在此演示中,我们将使用情节提要将UISlider添加到视图中。 将UISlider拖到Main.Storyboard文件中的视图上,并将元素附加到IBOutlets和IBActions。 从属性检查器中,我们可以根据需要提供MinimumValueImage,MaximunValueImage,MinimunTrackColor,MaximumTrackColor,Slider最小值和最大值等。 默认的UISlider几乎没有功能,例如刻度或工具提示,它们通过移动滑块来显示用户刚刚设置的滑块的值。 因此,我们将构建自定义的UISlider。 3.建立一个自定义的UISlider子类 在Main.storyboard文件中,转到UISlider,然后在身份检查器中将自定义类命名为CustomSlider。 4.添加刻度到滑块 现在,向滑块添加刻度线,我们将在滑块下方插入一个视图。 设置一个属性noofTicks,以在CustomSlider.h类的滑块中定义所需的刻度数。 在您的CustomSlider.m类中添加以下代码。 此方法将添加一个视图以显示滑块上的刻度。 现在,您只需从ViewController.m类调用此方法即可将刻度功能添加到滑块。 所以您的滑块现在看起来像这样。 现在,刻度线的目的是,每当您滑动到特定值时,旋钮都会捕捉到最近的刻度线。 为了实现相同的功能,我们重写了UISlider子类中的UIControl方法。 4.将工具提示添加到UISlider 我们可以向UISlider添加另一个有用的功能,即ToolTip。 工具提示用于向用户提供反馈,告知他或她通过移动它刚刚设置的值。 为了确定滑块值,无论何时将其更新为新值,我们都必须在UISlider子类实现中重写一些UIControl方法: 在beginTrackingWithTouch中:我们必须检查触摸是否在滑块的旋钮边界内,然后相应地显示工具提示弹出窗口。 我们在工具提示的外观/消失上添加了一些淡入/淡出效果。 这里的工具提示是一个自定义UIView,用于显示滑块值。 5.添加ToolTip UIView子类 我们必须构建一个小的视图来表示滑块值(给它一个外观一样的工具提示)。 为此,我们将使用UIBezierPath创建两个路径:一个是矩形,另一个是连接到它的箭头。 为了提供所需的外观,将两个路径合并在一起,并使用浮点值表示滑块的旋钮位置。 我们可以在子类的drawRect:方法中完成所有这些操作,通过该方法,每次值更改时都可以获取更新的视图。 […]

Swift-适用于iOS 11大标题的自定义导航栏图像🎨

标准的iOS组件可能会很无聊……幸运的是,有了Swift,自定义随处可见! 本文将演示如何在导航栏中使用自定义图像,同时仍保留导航控制器中提供的所有功能。 🚀 TL; DR :使用少量代码清除导航控制器提供的默认导航栏图像,并将其约束在视图的顶部,前导和尾随锚点上,以将其放置在适当的位置(请确保不要约束到安全区域) 。 您可能需要手动创建可能是您要记住的自定义导航栏标题。 有很多方法可以做到这一点,但最简单的方法就是使用Sketch。 使用矢量工具,我能够在几分钟内创建出我想要的设计。 这里的尺寸并不重要,因为Sketch默认具有出色的导出预设(iOS预设提供标准的Xcode要求的@ 2x和@ 3x大小)。 假设您已经在导航控制器中嵌入了视图控制器,则下一步是从提供的默认标题图像中剥离导航栏。 这相当简单,可以用几行代码来完成。 这是我用来执行此操作的功能; 请注意-我将其用作重用的struct ,但这是可选的。 既然导航栏已经清晰了,我们就可以提供自己的图像了。 出于本文的目的,我将使用界面生成器来完成此操作。 这就像将UIImageView拖到视图控制器上,提供适当的图像并设置约束一样简单。 为了设置约束以使iPhone X不会裁剪图像,我们需要约束imageView的顶部锚点以view的顶部锚点(而不是安全区域)。 在我的情况下,将约束设置为0在边缘沿边缘留一个小间隙,因此值-2应该可以解决该问题。 当然,高度限制将根据所使用的图像而变化。 并且,由于我的图像较暗,因此我还将大标题文本的颜色设置为白色,并将状态栏设置为.lightContent 。 此时,自定义标头应按预期工作 您可能会注意到标题图像在iPhone X上看起来不错,但在其他任何设备上看起来都太大了。 这是因为view的顶部锚点和X上的view的顶部安全区域锚点之间存在间隙。幸运的是,可以通过IBOutlet引用轻松地调整图像的高度,以参考图像视图的高度约束。 完整的设备尺寸可在此处找到。 将此代码放在同一区域,我们清除导航栏默认图像: 您可能还会注意到,将设备旋转到横向时,标题图像的高度过高。 这可以通过视图控制器中提供的willTransform(to:with)方法轻松处理。 我没有在示例中包含它,但这也可以在导航栏中添加栏按钮项。 而已! 您的自定义导航栏图像现在应该可以正常工作work 随时在Twitter和Github上关注我,以获得更多类似this‍👨🏻的内容