美文网首页
Circlelayout 模拟一个时钟

Circlelayout 模拟一个时钟

作者: MrKan | 来源:发表于2017-03-06 14:45 被阅读0次

##UICollectionViewLayout写一个Layout继承自UICollectionViewLayout,实现以下方法://返回cell的Layout属性- (nullable UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath;//返回SupplementaryView的Layout属性(HeaderView、FooterView)- (nullable UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath;//返回DecorationView的Layout属性- (nullable UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString*)elementKind atIndexPath:(NSIndexPath *)indexPath;实现prepareLayout方法,完成布局。在prepareLayout方法中调用[super prepareLayout];-(void)prepareLayout{    [super prepareLayout];    [self.attrsArr removeAllObjects];    //注册Decoration class    [self registerClass:[DecorationView class] forDecorationViewOfKind:@"DecorationView"];//注册Decoration View    }    layoutAttributesForElementsInRect方法中添加需要布局的所有Elements的Attributes    -(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect{    NSInteger  count=[self.collectionView numberOfItemsInSection:0];    //添加DecorationView的LayoutAttributes    [self.attrsArr addObject:[self layoutAttributesForDecorationViewOfKind:@"DecorationView" atIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]];    for (int i=0; i, <#CGFloat ty#>):只能变化一次,因为这种方式的变化始终是以最原始的状态值进行变化的,所以只能变化一次

UIButton *head = (UIButton *) [self.view viewWithTag:10];

head.transform = CGAffineTransformMakeTranslation(0,-10);

(2)CGAffineTransformTranslate(CGAffineTransform t, <#CGFloat tx#>, <#CGFloat ty#>):能够多次变化,每次变化都是以上一次的状态(CGAffineTransform t)进行的变化,所以可以多次变化

head.transform = CGAffineTransformTranslate(head.transform, 0, -10);

(3) CGAffineTransformIdentity:清空所有的设置的transform(一般和动画配合使用,只能使用于transfofrm设置的画面)

UIButton *head = (UIButton *) [self.view viewWithTag:10];

head.transform = CGAffineTransformIdentity;

(4)CGAffineTransformMakeScale( CGFloat  sx,  CGFloat  sy) (缩放:设置缩放比例)仅通过设置缩放比例就可实现视图扑面而来和缩进频幕的效果。

UIButton *head = [self.view viewWithTag:10];

head.transform = CGAffineTransformScale(head.transform,1.5,1.5);

(5) CGAffineTransformMakeRotation( CGFloat  angle) (旋转:设置旋转角度)

UIButton *head =  [self.view viewWithTag:10];

head.transform = CGAffineTransformMakeRotation(M_PI_2);

###实现UIView绕固定点旋转

定义方法:

CGAffineTransform  GetCGAffineTransformRotateAroundPoint(UIView *view,float centerX, float centerY ,float x ,float y ,float angle){

//centerX ,centerY 为当前View的中心点

x = x - centerX;

y = y - centerY;

CGAffineTransform  trans = CGAffineTransformTranslate(view.transform,x, y);

trans = CGAffineTransformRotate(trans,angle);

trans = CGAffineTransformTranslate(trans,-x, -y);

return trans;

}

使用如下:

float centerSecondX = self.secondHand.bounds.size.width/2;

float centerSecondY = self.secondHand.bounds.size.height/2;

float xSecond = self.secondHand.bounds.size.width/2;

float ySecond = self.secondHand.bounds.size.height;

CGAffineTransform transSecond = GetCGAffineTransformRotateAroundPoint(self.secondHand,centerSecondX,centerSecondY ,xSecond,ySecond,1*second/30.0*M_PI);

self.secondHand.transform = transSecond;

效果:

相关文章

  • Circlelayout 模拟一个时钟

    ##UICollectionViewLayout写一个Layout继承自UICollectionViewLayou...

  • “元宇宙时钟模拟” OpenCV中绘制模拟时钟显示当前时间

    前言 在本篇中,将利用绘图函数,学习如何在实战项目中使用绘图,绘制模拟时钟显示当前时间。 模拟时钟外观 结合Ope...

  • iOS制作一个模拟时钟

    今天在点电脑桌面通知中心的时候看到了这个东西,突发奇想自己能不能写一个呢? 然后就做了一个效果这样的模拟时钟,还可...

  • 环形布局CircleLayout

    环形布局,可拖动,独立item设置,可设置中心view更自然,更自由 效果图 用法 引入 方法 1.可以直接在布局...

  • CircleLayout圆形布局

    我们先看一下 效果图效果图 代码: 删除Item 参考Demo: GitHub地址上一篇:LineLayout下一...

  • LCD上显示指针式的时钟

    1、重点 (1)画线函数:画任意一条直线,包含斜线 (2)刻画时钟模型 (3)模拟时钟划线 2、画线函数 (1)通...

  • 04-JS中常用对象

    一、Date对象 日期对象用于处理日期和时间。 示例:文字版时钟 示例:电子表时钟 示例:模拟现实钟表 二、Ima...

  • SquareLayout方形布局

    需要实现的效果图 代码 Demo:GitHub地址上一篇:CircleLayout圆形布局下一篇 :瀑布流布局

  • scratch编程,制作一个模拟电子时钟

    “元”表示开始、最初。“旦”表示太阳刚出地平线之际,即一日之始;因此“元旦”就是一年之始、一年的第一天。需要注意的...

  • 明天我依然爱你 01

    朱欢醒来的时候天还没有亮,床头青蛙形状的夜光时钟显示是凌晨5:05分。周遭很寂静,只有模拟雨滴声音的卡通时钟走针的...

网友评论

      本文标题:Circlelayout 模拟一个时钟

      本文链接:https://www.haomeiwen.com/subject/licugttx.html