画线坐标问题

画线坐标问题

 

    if (_isVertical) {

        

        lineWidth = rect.size.width;

        startPoint = CGPointMake(rect.size.width/2, 0.0);

        endPoint= CGPointMake(rect.size.width/2, rect.size.height);

    }else{

        

        lineWidth = rect.size.height;

        startPoint = CGPointMake(0.0, rect.size.height/2);

        endPoint = CGPointMake(rect.size.width, rect.size.height/2);

    }

为什么要这样计算lineWidth = rect.size.width;/rect.size.height; 以及startPoint/endPoint 的开始点 传入的Fram肯定宽高都会超过10 这样的话lineWidth不就很宽 开始点的坐标肯定也会偏差很大

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
Tender10 2018-10-25 10:08:03

rect指的是当前视图的bounds,如果是竖线的话,那么我设置线宽是不是通过rect.size.width比较合理,因为竖线宽度要比高度小的多。而在设置横线的时候rect.size.height获取的高度要比宽度小的多。你可以在纸上画一个横线和竖线,就能够一目了然的看到高度和宽度了。因为rect指的是当前视图的bounds位置是相对于自身来作为参照的,不是以父视图坐标作为参照哦。

  • 提问者 慕粉1330426222 #1
    if (_isVertical == YES) { lineWidth = rect.size.width; startPoint = CGPointMake(0.0, 0.0); endPoint = CGPointMake(rect.origin.x, rect.size.height); }else{ lineWidth = rect.size.width; startPoint = CGPointMake(0.0, 0.0); endPoint = CGPointMake(rect.size.width, 0.0); } 那请问老师下 我这样写可以吗,也是在一个view里面画线,还有就是 直接在重写的initFrame方法中调用[self setNeedsDisplay];不可以吗 为什么要重写- (void)setFrame:(CGRect)frame;方法
    2018-10-25 11:07:03
  • 提问者 慕粉1330426222 #2
    明白为什么要重写- (void)setFrame:(CGRect)frame;方法了 老师帮我解答一下我前面的那个view画线问题就可以啦
    2018-10-25 11:09:14
  • Tender10 回复 提问者 慕粉1330426222 #3
    位置怎么设置都可以,只是要看最后的效果是如何的,就是美观度。rect.size.width/2这里除2的目的就是让这个点是处在线的中间位置,这样效果会好点。举个极端的例子,假设我现在线宽是100,这个时候rect.size.width/2点的开始位置就在50,就处在线的中间位置,如果你设置其它的点,是不是就会偏离这个中间位置。
    2018-10-25 11:37:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
iOS提升:网络多线程与常用主流框架
  • 参与学习       150    人
  • 解答问题       94    个

搞定网络多线程,掌握动画特效,熟悉第三方库等实用技术的使用,更有最新swift UI控件的讲解,让您不断丰富自己的开发技能。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师