我需要设计如下图像的菱形按钮。我尝试了两个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);
}
答案 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;
答案 2 :(得分:0)
如果有人想知道
,这就是swift的样子 var tr = CGAffineTransformIdentity
tr = CGAffineTransformScale(tr, 0.8, 1)
tr = CGAffineTransformRotate(tr, M_PI_4)
self.diamond.transform = tr
但问题是文本也受其影响