iOS:动态更改 UIView

Posted

技术标签:

【中文标题】iOS:动态更改 UIView【英文标题】:iOS : changing UIView Dynamically 【发布时间】:2013-07-08 09:05:26 【问题描述】:

我有一个应用程序,每次用户绘制手绘圆圈时,程序都会分配/初始化一个圆圈类(uiview),该类绘制 CAShapelayer 圆圈,而不是用户绘制的圆圈。 现在我希望当用户按下超级视图上的按钮时,绘制的圆圈的 alpha 会改变。 这是相关代码:

blueCircleView =[[ASFBlueCircle alloc]initWithFrame:CGRectMake(startPoint.x-10, startPoint.y-20, 60, 60)];

[self addSubview:blueCircleView];

以及类中的初始化代码:

-(id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self) 
    // Initialization code

    self.backgroundColor=[UIColor clearColor];
     UIBezierPath *circle = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 75, 75)];
   blueCircleLayer = [CAShapeLayer layer];
    blueCircleLayer.path = circle.CGPath;
    blueCircleLayer.strokeColor = [UIColor blueColor].CGColor;
    blueCircleLayer.fillColor = [UIColor clearColor].CGColor;
    blueCircleLayer.shadowColor =[UIColor blackColor].CGColor;
    blueCircleLayer.shadowOffset = CGSizeMake(0.0f, 5.0f);
    blueCircleLayer.shadowOpacity = 0.7f;
    blueCircleLayer.lineWidth = 7.0;

    [self.layer addSublayer:blueCircleLayer];

【问题讨论】:

那么,问题是什么?你做了什么,出了什么问题?向我们展示一些捕捉用户手势的代码,例如 【参考方案1】:

在 ASFBlueCircle.h 添加属性 @property CAShapeLayer *blueCircleLayer;

在init中,在addsublayer之后写下一行 self.blueCircleLayer = blueCircleLayer;

并且在按下按钮时调用的方法中 self.blueCircleLayer.color = [UIColor colorWithRed:red green:green blue:blue alpha:alpha].CGColor;

具有您想要的红色、绿色、蓝色、alpha 值。

【讨论】:

以上是关于iOS:动态更改 UIView的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中动态更改 UIViewController 的视图

iOS 根据键盘的高度动态改变UIView的高度

动态添加 UIView,还是创建 UITableView? IOS

iOS 7 - 自定义 UIView 的动态壁纸行为

iOS UIView 的动态高度取决于内部元素的数量

iOS Swift - 动态增加 UITextView 和父 UIView 的高度