IOS 开发之swift中UIView的扩展使用的实例

IOS 开发之swift中UIView的扩展使用的实例

扩展类代码:

import UIKit 

extension UIView
{
  // MARK : 坐标尺寸 

  var origin:CGPoint {
    get {
      return self.frame.origin
    }
    set(newValue) {
      var rect = self.frame
      rect.origin = newValue
      self.frame = rect
    }
  } 

  var size:CGSize {
    get {
      return self.frame.size
    }
    set(newValue) {
      var rect = self.frame
      rect.size = newValue
      self.frame = rect
    }
  } 

  var left:CGFloat {
    get {
      return self.frame.origin.x
    }
    set(newValue) {
      var rect = self.frame
      rect.origin.x = newValue
      self.frame = rect
    }
  } 

  var top:CGFloat {
    get {
      return self.frame.origin.y
    }
    set(newValue) {
      var rect = self.frame
      rect.origin.y = newValue
      self.frame = rect
    }
  } 

  var right:CGFloat {
    get {
      return (self.frame.origin.x + self.frame.size.width)
    }
    set(newValue) {
      var rect = self.frame
      rect.origin.x = (newValue - self.frame.size.width)
      self.frame = rect
    }
  } 

  var bottom:CGFloat {
    get {
      return (self.frame.origin.y + self.frame.size.height)
    }
    set(newValue) {
      var rect = self.frame
      rect.origin.y = (newValue - self.frame.size.height)
      self.frame = rect
    }
  } 

  // MARK: - 位移 

  // 移动到指定中心点位置
  func moveToPoint(point:CGPoint) -> Void
  {
    var center = self.center
    center.x = point.x
    center.y = point.y
    self.center = center
  } 

  // 缩放到指定大小
  func scaleToSize(scale:CGFloat) -> Void
  {
    var rect = self.frame
    rect.size.width *= scale
    rect.size.height *= scale
    self.frame = rect
  } 

  // MARK: - 毛玻璃效果 

  // 毛玻璃
  func effectViewWithAlpha(alpha:CGFloat) -> Void
  {
    let effect = UIBlurEffect.init(style: UIBlurEffectStyle.Light)
    let effectView = UIVisualEffectView.init(effect: effect)
    effectView.frame = self.bounds
    effectView.alpha = alpha 

    self.addSubview(effectView)
  } 

  // MARK: - 边框属性 

  // 圆角边框设置
  func layer(radius radius:CGFloat, borderWidth:CGFloat, borderColor:UIColor) -> Void
  {
    if (0.0 < radius)
    {
      self.layer.cornerRadius = radius
      self.layer.masksToBounds = true
      self.clipsToBounds = true
    } 

    if (0.0 < borderWidth)
    {
      self.layer.borderColor = borderColor.CGColor
      self.layer.borderWidth = borderWidth
    }
  } 

  // MARK: - 翻转 

  // 旋转 旋转180度 M_PI
  func viewTransformWithRotation(rotation:CGFloat) -> Void
  {
    self.transform = CGAffineTransformMakeRotation(rotation);
  } 

  // 缩放
  func viewScaleWithSize(size:CGFloat) -> Void
  {
    self.transform = CGAffineTransformScale(self.transform, size, size);
  } 

  // 水平,或垂直翻转
  func viewFlip(isHorizontal:Bool) -> Void
  {
    if (isHorizontal)
    {
      // 水平
      self.transform = CGAffineTransformScale(self.transform, -1.0, 1.0);
    }
    else
    {
      // 垂直
      self.transform = CGAffineTransformScale(self.transform, 1.0, -1.0);
    }
  }
}

使用效果图:

使用示例:

let imageView = UIImageView.init(frame: CGRectMake(10.0, 10.0, 60.0, 60.0))
self.view.addSubview(imageView) 

imageView.image = UIImage(named: "header") 

imageView.backgroundColor = UIColor.colorRandom() 

imageView.left = 100.0
imageView.top = 100.0
imageView.size = CGSizeMake(100.0, 100.0) 

imageView.moveToPoint(CGPointMake(100.0, 100.0))
imageView.scaleToSize(2.0) 

imageView.effectViewWithAlpha(0.6) 

imageView.layer(radius: 3.0, borderWidth: 1.0, borderColor: UIColor.redColor()) 

imageView.viewFlip(false) 

imageView.viewTransformWithRotation(5.0)

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本的支持!

(0)

相关推荐

  • IOS自定义UIView

    IOS中一般会用到几种方式自定义UIView 1.继承之UIView的存代码的自定义View 2.使用xib和代码一起使用的自定义View 3.存xib的自定义View(不需要业务处理的那种) 本文主要就介绍下存代码的自定义UIView和能够在storeboard中实时显示效果的自定义UIView 先上效果图 上面为设计界面,能够直接显示一个View的圆角与边框线 上面那个圆形饼图是用纯代码自定义的 1.实现在storeboard中实时显示效果的自定义UIView  1.创建MyView.h 继

  • 在uiview 的tableView中点击cell进入跳转到另一个界面的实现方法

    1.先重写uiviewcontrol的方法 - (UIViewController *)viewController { for (UIView* next = [self superview]; next; next = next.superview) { UIResponder *nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { return

  • Swift 2.1 为 UIView 添加点击事件和点击效果

    前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果. 正文 一.为 UIView 添加点击事件 extension UIView { func addOnClickListener(target: AnyObject, action: Selector) { let gr = UITapGestureRecognizer(target: target, action: action) gr.numbe

  • iOS动画-定时对UIView进行翻转和抖动的方法

    (翻转)方式一: [NSTimer scheduledTimerWithTimeInterval:3.f repeats:YES block:^(NSTimer * _Nonnull timer) { CABasicAnimation* rotationAnimation = [CABasicAnimation animation];; rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.

  • IOS UIView的生命周期的实例详解

    IOS UIView的生命周期的实例详解 任何对象的者有一个生命周期,即都存在一个实例化到销毁的过程. UIView对象也不例外,那么UIView从init/new开始后,直到dealloc结束的过程中都经历了哪些过程呢? 首先自定义继承自UIView的对象LifeView #import <UIKit/UIKit.h> @interface LifeView : UIView @end #import "LifeView.h" @interface LifeView ()

  • iOS为UIView设置阴影效果

    UIView的阴影设置主要通过UIView的layer的相关属性来设置 阴影的颜色 imgView.layer.shadowColor = [UIColor blackColor].CGColor; 阴影的透明度 imgView.layer.shadowOpacity = 0.8f; 阴影的圆角 imgView.layer.shadowRadius = 4.f; 阴影偏移量 imgView.layer.shadowOffset = CGSizeMake(4,4); imgView.layer.s

  • IOS 开发之UIView动画的实例详解

    IOS 动画实例详解 iOS动画的实现方式多种多样,这里就只记录一下 beginAnimations:context . 在你调用 beginAnimations:context:方法来启动一个动画后,动画并不会立即被执行,直 到你调用 UIView 类的 commitAnimations 类方法.你对一个视图对象执行的介于 beginAnimations:context:方法跟 commitAnimations方法之间的操作(例如移动)会在 commitAnimations 被执行后才会生效

  • IOS 开发之swift中UIView的扩展使用的实例

    IOS 开发之swift中UIView的扩展使用的实例 扩展类代码: import UIKit extension UIView { // MARK : 坐标尺寸 var origin:CGPoint { get { return self.frame.origin } set(newValue) { var rect = self.frame rect.origin = newValue self.frame = rect } } var size:CGSize { get { return

  • IOS 开发之swift中手势的实例详解

    IOS 开发之swift中手势的实例详解 手势操作主要包括如下几类 手势 属性 说明 点击 UITapGestureRecognizer numberOfTapsRequired:点击的次数:numberOfTouchesRequired:点击时有手指数量 设置属性 numberOfTapsRequired 可以实现单击,或双击的效果 滑动 UISwipeGestureRecognizer direction:滑动方向 direction 滑动方向分为上Up.下Down.左Left.右Right

  • IOS 开发之Swift 元组的实例详解

    IOS 开发之Swift 元组的实例详解 元组是多个值组合而成的复合值.元组中的值可以是任意类型,而且每一个元素的类型可以是不同的. 元组声明 //普通声明 var point = (5,2) var httpResponse = (404, "Not Found") //定义类型声明 var point2 : (Int,Int,Int) = (10,5,2) var httpResponse2 : (Int,String) = (200,"ok") 元组解包 va

  • IOS 开发之UITextField的光标操作扩展

    IOS 开发之UITextField的光标操作扩展 简介 在iOS开发中,有时候需要完全自主的定义键盘,用于完整的单词输入,例如计算机应用中,需要一次性的输入sin(,在移动光标时要完整的跳过sin(,在删除时也要完整的删除,这就需要对光标的位置进行精确控制,而ios并没有相关的函数可以直接操作光标,只给出了选择某个区域的功能,本文将介绍基于区域选择设计的UITextField扩展,用于获取光标位置以及移动光标. 实现原理 光标位置的获取 在textField中,有一个属性称之为selected

  • IOS 开发之Object-C中的对象详解

    IOS 开发之Object-C中的对象详解 前言 关于C语言的基础部分已经记录完毕,接下来就是学习Object-C了,编写oc程序需要使用Foundation框架.下面就是对oc中的对象介绍. 对象 对象和结构类似,一个对象可以保存多个相关的数据.在结构中,我们称这些数据为成员.而在对象中,称这些数据为实例变量.除了这些以外,对象和结构不用之处在于,对象还可以包含一组函数,并且这些函数可以使用对象所保存的数据,这类函数称为方法. 类 类(class)负责描述某个特点类型的对象,其中包括方法和实例

  • IOS 开发之ObjectiveC的变量类型的字符代表

    IOS 开发之ObjectiveC的变量类型的字符代表 实例代码: NSDictionary *dic = @{@"1":[NSNumber numberWithBool:YES], @"2":[NSNumber numberWithChar:'1'], @"3":[NSNumber numberWithDouble:2.0], @"4":[NSNumber numberWithFloat:2.0f], @"5&qu

  • IOS 开发之xcode对比两个分支中同一个文件

    IOS 开发之xcode对比两个分支中同一个文件 对于同一个项目的两个分支,因为两个分支可能各自都做了一些修改,所以通过Source Control中的History...功能是无法查看的,如下图: 这个时候,我们需要用到xcode的另外一个功能,如图: 操作步骤: 1.点击图中标注为1红框中的按钮,中间的界面会出现并排的两个窗口3和4(窗口3为当前分支文件内容). 2.从另外一个分支的xcode窗口中选中同名的文件,然后使用"command+`"切换到当前的xcode窗口. 3.拖动

  • IOS开发之UIScrollView实现图片轮播器的无限滚动

    IOS开发之UIScrollView实现图片轮播器的无限滚动 简介 在现在的一些App中常常见到图片轮播器,一般用于展示广告.新闻等数据,在iOS内并没有现成的控件直接实现这种功能,但是通过UIScrollView的允许分页设置,可以实现滚动轮播的功能. 轮播原理 UIScrollView对象有pagingEnable成员,如果设置为YES,那么每一个scrollView尺寸这么大的区域就会被当作一页,在滚动时会根据滚动的比例自动计算应该切换到哪一页. 无限滚动原理 要实现无限滚动,需要额外的两

  • IOS 开发之PickerView自定义视图的实例详解

    IOS 开发之PickerView自定义视图的实例详解 例如选择国家,左边是名称右边是国家,不应该使用两列,而是自定义PickerView的一列,可以通过xib来实现. 注意,虽然PickerView也是一列,但是数据源方法是@required,所以必须实现. 因此,核心思想就是一列,自定义PickerView的行视图. 使用viewForRow方法可以设定行视图. 这样的视图可以通过xib和它的控制器进行封装: Xib的控制器继承自UIView类即可. 控制器维护一个用于设置数据的模型对象fl

  • iOS开发之UIMenuController使用示例详解

    目录 简介 接口介绍 使用探索 如何创建并显示 UIMenuController 实现 Item 点击事件 菜单 Item 太多??? UIResponderStandardEditActions 协议 添加自定义菜单 箭头的方向 实际使用 总结 简介 UIMenuController 是一个菜单编辑界面,在很多地方都能用到,通常用于剪切.复制.粘贴.选择.全选和删除命令等,也可以自定义想要的操作,它长这样: 接口介绍 open class UIMenuController : NSObject

随机推荐