如何使用Objective-C iOS创建钻石形状按钮

时间:2016-02-16 16:48:11

标签: ios objective-c xcode uibutton core-graphics

我需要设计如下图像的菱形按钮。我尝试了两个UIViews,我可以通过继承UIView在视图顶部绘制菱形。但问题是这两个视图重叠......!

这是我使用过的方法:

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 4.0);
    CGContextSetStrokeColorWithColor(context, 
      [UIColor blueColor].CGColor);
    CGContextMoveToPoint(context, 100, 100);
    CGContextAddLineToPoint(context, 150, 150);
    CGContextAddLineToPoint(context, 100, 200);
    CGContextAddLineToPoint(context, 50, 150);
    CGContextAddLineToPoint(context, 100, 100);
    CGContextStrokePath(context);
}

enter image description here

3 个答案:

答案 0 :(得分:2)

您无法避免视图重叠。视图是矩形的!

你可以通过修改这些按钮的命中测试来做到这一点,这样按钮就会触及"只有当用户点击钻石内部时。

答案 1 :(得分:2)

您可以轻松地将正方形转换为钻石。假设你有一个名为diamond的sqaure按钮,下面的transfomation会产生一个菱形。

CGAffineTransform tr = CGAffineTransformIdentity;
tr = CGAffineTransformScale(tr, 0.8, 1);
tr = CGAffineTransformRotate(tr, M_PI_4);
self.diamond.transform = tr;

enter image description here

答案 2 :(得分:0)

如果有人想知道

,这就是swift的样子

var tr = CGAffineTransformIdentity tr = CGAffineTransformScale(tr, 0.8, 1) tr = CGAffineTransformRotate(tr, M_PI_4) self.diamond.transform = tr

但问题是文本也受其影响

enter image description here