首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    layoutSubviews和drawRect

    7.removeFromSuperview PS: init初始化不会触发layoutSubviews drawRect 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect 那么将在每次设置或更改frame的时候自动调用drawRect:。 4、直接调用setNeedsDisplay,或者setNeedsDisplayInRect PS: 重绘操作在drawRect方法中完成,不建议直接调用drawRect方法,当然调用此方法,结果没有任何效果的 我们调用UIView类中的setNeedsDisplay方法,则程序会自动调用drawRect方法进行重绘。

    37510编辑于 2022-09-13
  • 来自专栏Jacklin攻城狮

    谈谈对drawRect的理解

    drawRect简介 drawRect方法在UIView的使用上起着十分关键的作用。 drawRect作用 Only override drawRect: if you perform custom drawing. ,那么将在每次设置或更改frame的时候自动调用drawRect:; 直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:,但是有个前提条件是rect 不能为0; drawRect重绘方法定义 - (void)drawRect:(CGRect)rect;:重写此方法,执行重绘任务; - (void)setNeedsDisplay;:标记为需要重绘, ,具体调用时机同上; drawRect使用注意事项 如果子类直接继承自UIView,则在drawRect 方法中不需要调用super方法。

    2K20发布于 2018-09-12
  • 来自专栏進无尽的文章

    UI篇-VC的生命周期以及UIView的layoutSubviews和drawRect方法

    **综上两个方法都是异步执行的,layoutSubviews方便数据计算,drawRect方便视图重绘。 drawRect在以下情况下会被调用: 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。 drawRect 掉用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在 控制器中,这些View的drawRect就开始画了 那么将在每次设置或更改frame的时候自动调用drawRect:。 以上1,2推荐;而3,4不提倡 drawRect方法使用注意点: 1、 **若使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。

    2.3K30发布于 2018-09-12
  • 来自专栏云原生布道专栏

    IOS开发系列——UIView专题之三:自定义绘制篇【整理,部分原创】

    3UIView重绘机制 3.1DrawRect机制 3.1.1简介 iOS的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 重绘操作仍然在drawRect方法中完成,但是苹果不建议直接调用drawRect方法,当然如果你强直直接调用此方法,当然是没有效果的。 (调用setNeedsDisplay会自动调用drawRect) 在UIView中,重写drawRect: (CGRect) aRect方法,可以自己定义想要画的图案.且此方法一般情况下只会画一次.也就是说这个 那么将在每次设置或更改frame的时候自动调用drawRect:。 然后在这个字View中使用DrawRect方法。

    1.5K30编辑于 2022-03-08
  • 来自专栏c#Winform自定义控件系列

    (五十二)c#Winform自定义控件-LED数字

    + (m_drawRect.Width - m_lineWidth) / 2, m_drawRect.Top + (m_drawRect.Height / 2 - m_lineWidth) / 2, , m_drawRect.Top), 41 new Point(m_drawRect.Right, m_drawRect.Top+(m_drawRect.Height-m_lineWidth , m_drawRect.Top), 105 new Point(m_drawRect.Left, m_drawRect.Top+(m_drawRect.Height-m_lineWidth , m_drawRect.Top), 146 new Point(m_drawRect.Right, m_drawRect.Top+(m_drawRect.Height-m_lineWidth , m_drawRect.Top), 210 new Point(m_drawRect.Left, m_drawRect.Top+(m_drawRect.Height-m_lineWidth

    1.8K20发布于 2019-09-09
  • 来自专栏Android、鸿蒙开发

    Android 自定义View 之 RectF用法详解

    再多画几个长方形 RectF rectF2 = new RectF(120,10,210,200);//长方形2 canvas.drawRect(rectF2, customPaint (Color.BLUE)); RectF rectF3 = new RectF(240,10,330,200);//长方形3 canvas.drawRect(rectF3 )); RectF rectF2 = new RectF(100,10,190,200);//长方形2 canvas.drawRect(rectF2, customPaint RectF rectF = new RectF(10,10,300,100);//长方形 canvas.drawRect(rectF, customPaint(Color.GREEN)) ; RectF rectF2 = new RectF(300,10,390,300);//长方形2 canvas.drawRect(rectF2, customPaint

    2.5K20发布于 2020-09-25
  • 来自专栏c#Winform自定义控件系列

    (四十五)c#Winform自定义控件-水波图表

    , m_drawRect.Bottom - 1 - i * intLineSplit, m_drawRect.Right, m_drawRect.Bottom - 1 - i * intLineSplit ; 51 intEndY = m_drawRect.Bottom - 1 - (int)(m_currentSource[i].Value / intTop * m_drawRect.Height + 5)); 58 } 59 } 60 61 int intFirstY = m_drawRect.Bottom - , m_drawRect.Bottom - 1 - i * intLineSplit, m_drawRect.Right, m_drawRect.Bottom - 1 - i * intLineSplit ; 243 intEndY = m_drawRect.Bottom - 1 - (int)(m_currentSource[i].Value / intTop * m_drawRect.Height

    1.2K20发布于 2019-09-09
  • 来自专栏微卡智享

    Android Kotlin制作签名白板并保存图片

    drawRect.top = min(lastTouchY, event_y) drawRect.bottom = max(lastTouchY, event_y > drawRect.right) { drawRect.right = historicalx } if (historicaly < drawRect.top) { drawRect.top drawRect.bottom = historicaly } path.lineTo(historicalx (drawRect.right + STROKE_WIDTH / 2).toInt(), (drawRect.bottom + STROKE_WIDTH / 2).toInt

    1.1K30编辑于 2022-12-29
  • 来自专栏米扑专栏

    Qt坐标绘图

    QPaintEvent * ) {          QPainterpaint( this );          paint.setBrush(Qt::green );          paint.drawRect (0, 0, 100, 100 );          paint.setBrush(Qt::red );          paint.drawRect(-50, -50, 100, 100 ); } ( 0, 0, 100, 100 ); paint.setBrush( Qt::red ); paint.drawRect( -50, -50, 100, 100 ); } /******* 2.1 ( 0, 0, 100, 100 ); paint.scale( 2, 2 ); // paint放大两倍 paint.setBrush( Qt::red ); paint.drawRect ( 0, 0, 100, 100 ); paint.shear( 0, 1 ); // 纵向扭曲1倍 paint.setBrush( Qt::red ); paint.drawRect( 0,

    2.2K30发布于 2019-02-19
  • 来自专栏码客

    iOS layout相关方法

    在动画前执行self.view.layoutIfNeeded() drawRect 这个方法是用来重绘的。 drawRect在以下情况下会被调用: 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。 drawRect调用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在控制器中,这些View的drawRect就开始画了.这样可以在控制器中设置一些值给 然后系统自动调用drawRect:方法。 3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。 以上1,2推荐;而3,4不提倡 drawRect方法使用注意点: 1、若使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。

    1.4K10发布于 2019-10-22
  • 来自专栏非典型技术宅

    使用Quartz2D进行绘图1. Quartz2D2. 绘制基本图形

    : 为什么要实现drawRect:方法才能绘图到view上? 因为在drawRect:方法中才能取得跟view相关联的context drawRect:方法在什么时候被调用? :(CGRect)rect中的rect指的就是绘图view的bounds - (void)drawRect:(CGRect)rect { //1.获取图形上下文对象 CGContextRef 绘制基本图形 好了,坐好了,老司机开始开车啦~ 2.1 绘制三角形 - (void)drawRect:(CGRect)rect { // 获取context CGContextRef ctx - (void)drawRect:(CGRect)rect { // 获取context CGContextRef ctx = UIGraphicsGetCurrentContext();

    89250发布于 2018-06-28
  • 来自专栏算法微时光

    俄罗斯方块之心(cocos2d-js+html5)

    , 1, this.col); this.draw.drawRect(this.thr.a, this.thr.d, this.col, 1, this.col); this.draw.drawRect , 1, this.col); this.draw.drawRect(this.thr.a, this.thr.d, this.col, 1, this.col); this.draw.drawRect , 1, this.col); this.draw.drawRect(this.thr.a, this.thr.d, this.col, 1, this.col); this.draw.drawRect this.draw.drawRect(this.thr.a, this.thr.d, this.col, 1, this.col); this.draw.drawRect , 1, this.col); this.draw.drawRect(this.thr.a, this.thr.d, this.col, 1, this.col); this.draw.drawRect

    1.4K40发布于 2020-04-24
  • 来自专栏sktj

    python pyqt5 QPainter 画图

    (10, 15, 90, 60) brush = QBrush(Qt.Dense1Pattern) qp.setBrush(brush) qp.drawRect(130, 15 , 90, 60) brush = QBrush(Qt.Dense2Pattern) qp.setBrush(brush) qp.drawRect(250, 15, 90, 60 ) brush = QBrush(Qt.Dense3Pattern) qp.setBrush(brush) qp.drawRect(10, 105, 90, 60) (brush) qp.drawRect(130, 195, 90, 60) brush = QBrush(Qt.BDiagPattern) qp.setBrush(brush) qp.drawRect(250, 195, 90, 60) if name == 'main': app = QApplication(sys.argv) demo = Drawing()

    2.2K40发布于 2019-07-05
  • 来自专栏android技术

    Android滤镜--Alpha值滤镜处理之MaskFilter

    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.RED); canvas.drawRect BlurMaskFilter.Blur.NORMAL); paint.setMaskFilter(maskFilter); canvas.translate(400, 0); canvas.drawRect BlurMaskFilter.Blur.OUTER); paint.setMaskFilter(maskFilter); canvas.translate(400, 0); canvas.drawRect ; paint.setColor(Color.RED); Rect rectf = new Rect(10,10,300,300); canvas.drawRect EmbossMaskFilter(new float[]{1,1,1},0.2f,1000,50); paint.setMaskFilter(embossMaskFilter); canvas.drawRect

    1.6K20发布于 2020-07-03
  • 来自专栏APP自动化测试

    使用UIBezierPath绘制图形

    当需要画图时我们一般创建一个UIView子类, 重写其中的drawRect方法 再drawRect方法中利用UIBezierPath添加画图 UIBezierPath的使用方法: (1)创建一个Bezier 也可以设置filled path的属性usesEvenOddFillRule 我们直接上demo, 创建一个BezierView继承自UIView并重写drawRect方法 #import "BezierView.h " @implementation BezierView - (void)drawRect:(CGRect)rect { // Drawing code //设置线条颜色 如果把drawRect中最后一句话改为[apath fill];运行结果就是实心图 ? 我们可以用UIBezierPath的bezierPathWithRect:CGRect(rect)方法来画矩形, 代码如下 - (void)drawRect:(CGRect)rect { //

    1.4K40发布于 2019-10-15
  • 来自专栏androud

    认识Canvas

    100, 100, 200, 300, mPaint);         //绘制矩形         mPaint.setStyle(Paint.Style.FILL);         canvas.drawRect         mPaint.setColor(Color.RED);         //平移测试         canvas.translate(50, 900);         canvas.drawRect (new Rect(0, 0, 100, 100), mPaint);         canvas.translate(50, 50);         canvas.drawRect(new Rect (0, 0, 100, 100), mPaint);         //缩放测试         canvas.translate(100,-50);         canvas.drawRect( ), mPaint);         //旋转测试         canvas.save();         canvas.translate(350, 50);         canvas.drawRect

    1.1K00编辑于 2022-02-06
  • 来自专栏Android干货

    自定义控件详解(三):Canvas效果变换

    Color.RED); paint.setStrokeWidth(2); //先绘制一个 左上角坐标(100,100) 宽300 高200 的矩形 canvas.drawRect 绘制一个宽300 高200 的矩形 ,因为画布向右平移了120px,向下平移了120px, // 所以这时距屏幕左上角的距离为(100+120,100+120) canvas.drawRect /再绘制一个蓝色的矩形 ,看看这个矩形是以平移前的画布左上角为原点还是以平移后的画布左上角为原点 paint.setColor(Color.BLUE); canvas.drawRect /再绘制一个蓝色的矩形 ,看看这个矩形是以平移前的画布左上角为原点还是以平移后的画布左上角为原点 paint.setColor(Color.BLUE); canvas.drawRect ); paint.setColor(Color.RED); paint.setStrokeWidth(2); //先绘制一个 左上角坐标(100,100) 宽300 高200 的矩形 canvas.drawRect

    1.1K50发布于 2018-06-08
  • 来自专栏Helloted

    图形

    如颜色、裁减区域、线条宽度和样式信息、字体信息、混合模式等 使用UiKit,你只能在当前上下文中绘图,所以如果你当前处于UIGraphicsBeginImageContextWithOptions函数或drawRect +UIBezierPath 重写drawRect能够自动生成Context,所以可以在drawRect方法里面画图形 - (void)drawRect:(CGRect)rect{ UIBezierPath +context 获取到drawRect自动生成的context,在context里画图形 - (void)drawRect:(CGRect)rect{ CGContextRef context 调用view.layer.delegate(view)的drawLayer:inContext:,并传入刚才准备好的上下文 view的drawLayer:inContext:方法内部又会调用view的drawRect :方法 view就可以在drawRect:方法中实现绘图代码, 所有东西最终都绘制到view.layer上面 系统再将view.layer的内容拷贝到屏幕, 于是完成了view的显示

    1.6K10编辑于 2022-06-07
  • 来自专栏阿策小和尚

    【Flutter 专题】36 自定义 View 之 Canvas (三)

    画布操作 和尚接下来介绍一下画布的基本操作,与 Android 很相似; scale 缩放 scale 即缩放效果,缩放的是画布大小,可以设置缩放倍数,且缩放倍数会叠加; canvas.drawRect Colors.red ..strokeWidth = 2.0..style = PaintingStyle.stroke); // 缩放 canvas.scale(2); canvas.drawRect Colors.red ..strokeWidth = 2.0..style = PaintingStyle.stroke); // 缩放 canvas.scale(0.25); canvas.drawRect skew 斜切 skew 即斜切,两个参数为水平方向和竖直方向切度值,值为三角函数中的 tan 值,即 45 度时 tan 值为 1; canvas.drawRect( Rect.fromLTWH strokeWidth = 2.0..style = PaintingStyle.stroke); // 水平方向斜近 30 度,竖直方向不变 canvas.skew(0.6, 0); canvas.drawRect

    1.1K21发布于 2019-08-12
  • 来自专栏深入理解Android

    Android自定义系列——4.Canvas操作

    rect = new RectF(0,-400,400,0); // 矩形区域 mPaint.setColor(Color.BLACK); // 绘制黑色矩形 canvas.drawRect rect = new RectF(0,-400,400,0); // 矩形区域 mPaint.setColor(Color.BLACK); // 绘制黑色矩形 canvas.drawRect rect = new RectF(0,-400,400,0); // 矩形区域 mPaint.setColor(Color.BLACK); // 绘制黑色矩形 canvas.drawRect rect = new RectF(0,-400,400,0); // 矩形区域 mPaint.setColor(Color.BLACK); // 绘制黑色矩形 canvas.drawRect rect = new RectF(0,-400,400,0); // 矩形区域 mPaint.setColor(Color.BLACK); // 绘制黑色矩形 canvas.drawRect

    1.2K40编辑于 2022-06-22
领券