Tag: 图像

iOS-图像上的文字叠加

我们如何在iOS的令人惊叹的图像上覆盖文本? 这基本上是所有基于图形的应用程序所必需的,例如海报制作,创建徽标,在图像上生成水印,并且还有助于重叠两个图像。 以下是一个演示,通过该演示,您可以更好地了解iOS中图像上的文本覆盖: 步骤1建立XCode专案 为此,您必须创建一个xCode项目,将其命名为Sketch_demo并将其保存到特定项目。 该项目将包含一个View Controller,这是我们的主要View Controller。 步骤2 DesignUI 要在图像上重叠文本,您需要在主视图控制器中使用一个UIImageView并将其设置为任意图像并将其模式设置为Aspect Fit。 因此,您的图像不会拉伸。 第3步创建标签并添加手势 在主视图控制器的viewDidLoad()中编写以下方法。 ( void )viewDidLoad { [ super viewDidLoad]; [imageview setImage:[UIImage imageNamed:@” darken.png”]]; UITextView * sktechLabel = [[UITextView alloc] initWithFrame: CGRectMake ( 50,50,250,40 )]; sktechLabel.text = @“让我喜欢一个新的方式,这是我拥有的一个好方法”; sktechLabel.textColor = [UIColor whiteColor]; sktechLabel.delegate =自我; sktechLabel.font = [UIFont fontWithName:@“ Marker Felt” size:35]; [imageview addSubview:sktechLabel]; […]

如何使用Swift 3制作图像裁剪器

我最近有一个项目,我必须按特定的宽高比裁剪图像,但找不到完整的教程,所以我认为我应该做一个。 我按照以下步骤划分了本教程,以便您轻松理解。 创建图像缩放和滚动。 计算图像视图内的图像帧。 计算相对于实际图像尺寸的裁剪区域框。 进行裁剪 创建图像缩放和滚动 让我们从创建一个ViewController开始。 因此,转到您的故事板文件,然后从XCode右下角的对象库中拖动一个新的ViewController。 现在将一个ScrollView拖到ViewController上,并将ScrollView的帧调整到ViewController的边缘,然后将ImageView拖到ScrollView下,并将ImageView的帧调整到ScrollView的边缘。 要添加所有缺少的约束,只需转到情节提要的右下角,然后单击“向所有视图添加缺少的约束”。 现在,可以通过ImageAsset在ImageView上设置图像,但是稍后在您的应用程序中,您可以从相机或照片库或任何其他来源获取图像并将其设置为ImageView。 还将内容模式更改为Aspect Fit。 现在,为ScrollView和ImageView创建出口,并设置scrollview的委托,最小缩放比例和最大缩放比例。 class ImageCropperViewController:UIViewController,UIScrollViewDelegate { @IBOutlet var scrollView:UIScrollView!{ didSet { scrollView.delegate =自我 scrollView.minimumZoomScale = 1.0 scrollView.maximumZoomScale = 10.0 } } @IBOutlet var imageView:UIImageView! } 最后,我们需要实现一个UIScrollViewDelegate函数,该函数将返回需要缩放的视图。 对于我们来说,我们需要返回ImageView。 func viewForZooming(在scrollView中:UIScrollView)-> UIView? { 返回imageView } 计算图像视图内的图像帧 当ImageView的内容模式为Aspect Fit时,图像可能不会填满ImageView的所有空间,因此,ImageView内部的图像帧可能不等于其边界。 创建UIImageView的扩展,然后编写一个函数来计算ImageView中的图像帧。 扩展程序UIImageView { func imageFrame()-> CGRect { […]

使用Swift圈出图片

在此网站以及许多其他网站上,个人资料图片是圆形的。 它可以使您的应用从一系列的盒子开始,到开始在其后面进行一些设计时,非常有效。 可喜的是,这绝对是小菜一碟! 声明自己一个UIIMageView,然后将图像加载到其中,方法是使用故事板进行设置,或者可以使用UIImagePicker。 要使用UIImagePicker,您需要使您的类从几个委托中继承: 类exampleClassName:UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {//插入类代码 } 如您所见,UIImagePickerControllerDelegate和UINavigationControllerDelegate都是必需的。 要实现这些,您需要首先创建UIImagePickerController类型的变量以在代码中使用。 首先,在viewDidLoad中: 覆盖func viewDidLoad(){ super.viewDidLoad() //创建一个UIImagePickerController对象 imagePicker = UIImagePickerController() //图像选择器委托是此类 imagePicker.delegate =自我 } 现在,我们有一个可供使用的图像选择器。 所以我们只需要使用它。 因此,只要您希望用户选择图像,就说在按下按钮之后,您将需要展示imagePicker视图控制器,这是通过以下代码行完成的。 presentViewController(imagePicker,动画:true,完成:无) 它只是说明要呈现一个特定的视图(imagePicker视图),然后将其与动画一起移动。 完成后,我们什么也不想做。 您可以在呈现此视图之后插入想要发生的额外代码,也许存储图像,或以某种方式对其进行修改,但这不是本教程的内容。 将向用户显示其照片部分,以便他们可以选择照片,就像打开了“照片”应用程序一样。 点击照片时,将选择照片。 但是,视图控制器将保留。 因此,我们需要从UIImagePickerControllerDelegate中使用另一个函数: func imagePickerController(picker:UIImagePickerController,didFinishPickingImage image:UIImage,editInfo:[String:AnyObject]?){ imagePicker.dismissViewControllerAnimated(true,完成:无) theImage.image =图片 } 这看起来确实比较复杂,但是函数调用是Delegate的一部分,因此Xcode会自动为您完成该操作。 但是我们要说的是,再次关闭imagePicker视图控制器,而没有完成代码。 就是这样了。 您已经选择了图像。 并使其变得圆润: //此行设置您想要的半径。 //这将形成一个完美的圆圈。 //较小的值将使圆角正方形 theImage.layer.cornerRadius = theImage.frame.size.width / 2 //这设置是否将图像裁剪到此边框。 theImage.clipsToBounds […]

Fazendo下载快速格式的图像

最新图片或Alamofire图片 Olágalerinha。 Dessa vez vim mostrar算法和简单应用可用于下载iOS上的免费图像。 Para quem acompanhou um tempoatráscoloquei em 3 passos como criar uma pokedex。 Criando uma Pokedex com Swift零件:1/3 Instalando o CocoaPods medium.com Criando uma Pokedex com Swift零件:2/3 Consumindo um JSON medium.com Criando uma Pokedex com Swift零件:3/3 Mostrando nossos monstrinhos medium.com Nessa pokedex temos o列表下载口袋妖怪图片。 Eles foram feitos包含API Alamofire。 Alamofire / […]

小部件:图像小部件测试应用程序

扩展名有照片,共享,自定义键盘等几种类型。扩展名是iOS 8中引入的功能,非常受欢迎。 我们将专注于其中之一。 今天的扩展也称为小部件,并描述简单的实现。 让我们解释一下关于小部件的细节。 首先,今天和其他扩展都是简单的“子”应用,它们正在扩展“父”应用,因此不能单独分发。 今天的扩展程序可以为用户提供快速信息,如日程安排,天气,阅读最多的新闻。 他们必须具有更新的内容,具有低内存使用率的简单UI,因为用户通常可以具有多个扩展名,已打开并且系统将立即终止使用过多内存的扩展名。 互动是有限的。 没有键盘访问权限。 理论足够,让我们开始执行。 打开Xcode,然后在“文件”菜单中选择“新建”>“项目…”(将其作为编程语言)。 创建项目后,打开“文件”菜单,然后选择“新建”>“目标”,然后在“ Aplication Extension”部分中选择“ Today Extension”。 在出现有关为扩展创建新方案的警报后,只需单击“激活”。 Xcode将为您创建一个新的.storyboard文件(默认情况下为MainInterface.storyboard),UIViewController类(默认情况下为TodayViewController)和另一个Info.plist文件。 在Info.plist文件中,我们可以在Bundle显示名称键下更改扩展名,并设置更长,更具描述性的名称。 扩展仅是StoryBoard和UIViewController,它具有所有可用的方法(viewDidLoad(),viewDidAppear()…)。 要设置高度值,我们可以使用preferredContentSize来设置所需的高度。 宽度的最大值将是屏幕的宽度。 将self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded添加到viewDidLoad()以在扩展视图上添加“更多/更少”按钮。 我们必须实现widgetActiveDisplayModeDidChange(_ activeDisplayMode:NCWidgetDisplayMode,withMaximumSize maxSize:CGSize)协议方法,该方法将在按下“更多/更少”按钮时被调用,扩展大小可以根据该方法中的状态进行设置。 widgetActiveDisplayModeDidChange(_ activeDisplayMode:NCWidgetDisplayMode,withMaximumSize maxSize:CGSize)是NCWidgetProviding协议的一部分,稍后我们将提及(func widgetMarginInsets(forProposedMarginInsets defaultMarginInsets:UIEdgeInsets)-> UIEdgeInsets在iOS 10中已弃用)。 在继续之前,请打开MainInterface.storyboard。 将另一个UILabel和UIImageView添加到控制器,并将它们连接到TodayViewController类。 将高度和宽度的固定约束添加到UIImage,并使用垂直约束添加居中,并在标题UILabel和字幕UILabel中添加底部,顶部,前导,尾随。 之后,我们可以在类的扩展中添加简单的数据获取方法。 将用于从响应中获取URL的响应数据和UIImage数据。 设置图片网址以获取json数据。 创建用于解析和存储响应数据的结构。 添加用于用新数据更新UI的简单方法。 将在viewDidLoad()和widgetPerformUpdate(completionHandler:(@escaping(NCUpdateResult)-> Void))中设置fetchData()。 当扩展名不在屏幕上时,它用于更新视图,更新取决于将在完成处理程序中返回的常量(NCUpdateResult.newData,NCUpdateResult.noData,NCUpdateResult.failed)。 为了隐藏空内容并在收到内容时取消隐藏,我们还可以使用setHasContent(_标志:Bool,forWidgetWithBundleIdentifier bundleID:String),在其中传递确定内容状态的布尔值。 现在我们可以运行该应用程序,并且应该看到类似于此视图的简单视图。 开启网址 如今,扩展程序(窗口小部件)是轻量级的,可以显示基本信息,并且如果用户希望进行更多交互,则将其转移至应用程序是一种好习惯。 对于这种传输,我们通常使用UIApplication.sharedApplication()。openURL(url),但由于扩展名不是应用程序,因此没有可用的UIApplication对象。 代替的是扩展上下文执行相同的操作extensionContext?.openURL(url,completionHandler:((Bool)-> Void)?) […]

SwiftBits:缓存图像

我将开始一系列简短的文章,在这些文章中我分享一小段代码。 这些将是简短的读物,并将重点放在一个主要思想上。 在本系列的第一篇文章中,我们将着眼于通过使用缓存更有效地在应用程序中加载图像。 URLCache类通过将NSURLRequest对象映射到CachedURLResponse对象来实现对URL加载请求的响应的缓存。 它提供了内存中和磁盘上缓存的组合,并允许您操纵内存和磁盘上部分的大小。 UrlCache使我们能够缓存对URL请求的响应。 我们可以使用此缓存来存储所有响应数据。 它不限于图像。 对于本文,我们仅将其用于图像。 创建一个名为UIImageView + Cache.swift的文件。 然后创建UIImageView的扩展,并添加以下代码。 首先,我们根据传递给函数的字符串创建URL。 如果URL无法实例化,我们将返回并且不执行任何进一步的操作。 我们从共享URLCache创建缓存。 这是适用于大多数使用情况的默认缓存。 接下来,我们从URL创建一个URLRequest 。 我们利用userInitiated队列来完成工作。 这样做是为了在加载图像时,我们不会阻塞主线程,也不会阻塞应用程序UI。 首先,我们检查我们要请求的图像是否已经在缓存中。 如果它在缓存中,则显示图像。 我们将在下一节中讨论过渡功能的实现。 当在缓存中找不到图像时,我们继续使用URLSession对该图像进行请求 。 我们检查是否有数据和响应。 在执行任何工作之前,我们还确认响应是成功的响应。 最后,我们根据响应和数据创建cachedData并将其存储到缓存中。 然后调用过渡 。 在我们上面为UIImageView创建的扩展内部,添加以下函数。 请注意,在上面调用该函数时,该函数始终位于主线程上。 在这里,我们创建了一个辅助函数,该函数将交叉溶解转换应用于UIImageView。 这将使图像以平滑的动画显示而不是仅仅显示。 这样的小事情可以改善用户体验,并使您的应用脱颖而出。 希望您喜欢这篇文章,并从中受益匪浅。 😊 进一步阅读: URLCache –基础| Apple开发人员文档 该类按原样使用,但是如果有特殊需要,可以将其子类化。 例如,您可能想要… developer.apple.com NSURLCache NSURLCache为应用程序的URL请求提供了一种组合的内存中和磁盘上缓存机制。 作为一部分… nshipster.com GCD 101:async()–一个免费的Swift黑客教程 通过这些免费教程学习iOS的Swift编码 www.hackingwithswift.com 源代码: