IOS-DEMO5 PLLCircleProgressView

如何实现SOLIDWORKS阵列的“智能变更”? 有时,我们在设计一个零件时,零件上有一排阵列孔,同时零件有不同的长度,我们又希望可以做到零件长度改变时,这排孔可以按长度等距增减孔阵列的个数;或是零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那具体要怎么做呢?接下来,我们一起来看看怎么用SOLIDWORKS中简单的操作来实现这两种智能的变更: 零件长度加长或缩短时,这排孔要按长度等距增减孔阵列的个数。 零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那接下来,我们一起来看看怎么用简单的操作来实现这两种智能的 阅读详情
描述:
     项目中要使用到圆形的进度条,自己做了一个。

效果图:


核心逻辑:
     继承View 重绘 用掩码控制显示
     首先绘制背景。
     然后绘制掩码层
     将CGContext根据掩码层clip
     绘制需要变化的显示层(直接绘制完整的 掩码层的clip决定了显示范围)


//
//  PLLCircleView.h
//  DemoForCircle
//
//  Created by liu poolo on 14-8-1.
//  Copyright (c) 2014年 liu poolo. All rights reserved.
//

#import <UIKit/UIKit.h>
typedef enum {
    KDrawModeSingle=0,
    KDrawModeGradient,
}DrawMode;

@interface PLLCircleProgressView : UIView

@property (nonatomic,assign,setter = setMaxValue:) float maxValue;
@property (nonatomic,assign,setter = setCurValue:) float curValue;
@property (nonatomic,assign) float lineWidth;
@property (nonatomic,assign) float radius;
@property (nonatomic,assign) DrawMode drawMode;//default is singleColor


//color
@property (nonatomic,strong) UIColor *circleOuterRaceBackgroundColor;

@property (nonatomic,strong) UIColor *circleOuterRaceForegroundColor;

@property (nonatomic,strong) UIColor *circleInterBackgroundColor;

-(void)setLineWidth:(float)lineWidth maxValue:(float) maxValue curValue:(float) curValue radius:(float)radius  circleOuterRaceBackgroundColor:(UIColor*)circleOuterRaceBackgroundColor circleOuterRaceForegroundColor:(UIColor*)circleOuterRaceForegroundColor circleInterBackgroundColor:(UIColor*)circleInterBackgroundColor;

-(void)setGradinetForeColorRed:(float)foreRed green:(float)foreGreen blue:(float)foreBlue alpha:(float)foreAplha andBackColorRed:(float)backRed green:(float)backGreen blue:(float)backBlue alpha:(float)backAplha;

@end


//
//  PLLCircleView.m
//  DemoForCircle
//
//  Created by liu poolo on 14-8-1.
//  Copyright (c) 2014年 liu poolo. All rights reserved.
//

#import "PLLCircleProgressView.h"

@interface PLLCircleProgressView(){
   
}
@property (nonatomic,assign) float percenValue;//(value sizein 1~0)

@end


@implementation PLLCircleProgressView{
    UILabel* _title;
}

@synthesize percenValue=_percenValue;
NSArray *gradientColorArray;
float maxRadius;

-(CGFloat)percenValue{
    return _percenValue;
}

-(void)setPercenValue:(float)percenValue{
    if(_percenValue!=percenValue){
        _percenValue=percenValue;
        [self setNeedsDisplay];
    }
}

-(void)setMaxValue:(float)maxValue{
    if(_maxValue!=maxValue){
        _maxValue=maxValue;
        [self setPercenValue:_curValue/_maxValue];
    }
}

-(void)setCurValue:(float)curValue{
    if(_curValue!=curValue){
        _curValue=curValue;
        if(_curValue>_maxValue){

            _title.text=[NSString stringWithFormat:@"%0.0f 越界",curValue];
        }else{
            _title.text=[NSString stringWithFormat:@"%0.0f",curValue];
        }
        [self setPercenValue:_curValue/_maxValue];
    }
}

-(void)setLineWidth:(float)lineWidth maxValue:(float) maxValue curValue:(float) curValue radius:(float)radius  circleOuterRaceBackgroundColor:(UIColor*)circleOuterRaceBackgroundColor circleOuterRaceForegroundColor:(UIColor*)circleOuterRaceForegroundColor circleInterBackgroundColor:(UIColor*)circleInterBackgroundColor{
    _lineWidth=lineWidth;
    _maxValue=maxValue;
    _curValue=curValue;
    _radius=radius;
    _circleInterBackgroundColor=circleInterBackgroundColor;
    _circleOuterRaceBackgroundColor=circleOuterRaceBackgroundColor;
    _circleOuterRaceForegroundColor=circleOuterRaceForegroundColor;
    [self setNeedsDisplay];
}

-(void)setGradinetForeColorRed:(float)foreRed green:(float)foreGreen blue:(float)foreBlue alpha:(float)foreAplha andBackColorRed:(float)backRed green:(float)backGreen blue:(float)backBlue alpha:(float)backAplha{
    gradientColorArray=@[[NSNumber numberWithFloat:foreRed],[NSNumber numberWithFloat:foreGreen],[NSNumber numberWithFloat:foreBlue],[NSNumber numberWithFloat:foreAplha],[NSNumber numberWithFloat:backRed],[NSNumber numberWithFloat:backGreen],[NSNumber numberWithFloat:backBlue],[NSNumber numberWithFloat:backAplha]];
    self.drawMode=KDrawModeGradient;
}

#pragma mark - viewFrame
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.opaque=NO;
       
        //title
        _title=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
        [self addSubview:_title];
        _title.center=self.center;
        _title.text=@"0";
        [_title setTextColor:[UIColor whiteColor]];
        [_title setTextAlignment:NSTextAlignmentCenter];
    }
    return self;
}

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];
    // Drawing outerraceBackground & interBackGround
   
    CGContextRef ctx=UIGraphicsGetCurrentContext();
    maxRadius=((MIN(self.frame.size.width, self.frame.size.height)-self.lineWidth)/2);
    if(self.radius>maxRadius){
        self.radius=maxRadius;
    }
   
    CGContextAddArc(ctx, self.frame.size.width/2, self.frame.size.height/2, self.radius, 0, 2*M_PI, 1);
    [self.circleInterBackgroundColor setFill];
    [self.circleOuterRaceBackgroundColor setStroke];
    CGContextSetLineCap(ctx, kCGLineCapRound);
    CGContextSetLineWidth(ctx, self.lineWidth);
    CGContextDrawPath(ctx, kCGPathFillStroke);
   
   
    //mask
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef imageCtx=UIGraphicsGetCurrentContext();
    CGContextAddArc(imageCtx, rect.size.width/2, rect.size.height/2, self.radius, M_PI*0.5, [self valueToRadian], 1);
    CGContextSetLineWidth(imageCtx, self.lineWidth);
    CGContextSetLineCap(imageCtx, kCGLineCapButt);
    CGContextDrawPath(imageCtx, kCGPathStroke);

    //mask 是bitmap才可 此处不能用UIImage转成CGImage
    CGImageRef mask=CGBitmapContextCreateImage(UIGraphicsGetCurrentContext());
    UIGraphicsEndImageContext();

   
    CGContextSaveGState(ctx);
    //clip前先存储以防需要使用clip前的状态
    CGContextClipToMask(ctx, self.bounds, mask);
    CGImageRelease(mask);
   
    if(self.drawMode==KDrawModeSingle){
    //        绘制单色
        CGContextAddRect(ctx,CGRectMake(0, 0, rect.size.width, rect.size.height));
        [self.circleOuterRaceForegroundColor setFill];
        CGContextDrawPath(ctx, kCGPathFill);
    }else if (self.drawMode==KDrawModeGradient){
    //      绘制渐变(梯度)
        CGFloat components[8]={
                                [(NSNumber*)[gradientColorArray objectAtIndex:0] floatValue],[(NSNumber*)[gradientColorArray objectAtIndex:1] floatValue],[(NSNumber*)[gradientColorArray objectAtIndex:2] floatValue],[(NSNumber*)[gradientColorArray objectAtIndex:3] floatValue], //foreColor
                                [(NSNumber*)[gradientColorArray objectAtIndex:4] floatValue],[(NSNumber*)[gradientColorArray objectAtIndex:5] floatValue],[(NSNumber*)[gradientColorArray objectAtIndex:6] floatValue],[(NSNumber*)[gradientColorArray objectAtIndex:7] floatValue]};//backColor
       
        //location 每个数字 代表对应颜色所在的位置0~1
        CGFloat locations[2]={
            0,
            1,
        };

        CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();
        CGGradientRef gradient=CGGradientCreateWithColorComponents(colorSpace, components, locations, 2);
        CGPoint startPonit=CGPointMake(CGRectGetMidX(rect),self.center.y-self.radius-self.lineWidth/2);
        CGPoint endPonit=CGPointMake(CGRectGetMidX(rect),self.center.y+self.radius+self.lineWidth/2);
           
        CGContextDrawLinearGradient(ctx, gradient, startPonit, endPonit, kCGGradientDrawsBeforeStartLocation);
           
        //kCGGradientDrawsAfterEndLocation endLocatio(结束点)之后也绘制
        //kCGGradientDrawsBeforeStartLocation StartLocation(开始点)之后也绘制
        CGGradientRelease(gradient),gradient=NULL;
    }
   
}


-(CGFloat)valueToRadian{//just return -1.5p~0.5p
    return [self subRadian:(-2*_percenValue+0.5)]*M_PI;
}

-(CGFloat)subRadian:(CGFloat)radian{

    if(radian>0.5){
        radian=[self subRadian:(radian-2)];
    }else if(radian<((-3.0f/2.0f))){
        radian=[self subRadian:(radian+2)];
    }
    return radian;
}


@end
Windows 11 安装 Miniforge,配置国内源 本文详细介绍了在 Windows 11 系统中安装 Miniforge 的完整流程,包括下载、安装选项设置、配置国内镜像源(如清华大学源)以加速包管理,并启用 mamba 提升依赖解析与安装速度。同时涵盖 conda 与 mamba 的基本使用验证、PowerShell 初始化及环境提示符优化,帮助用户快速搭建高效、开源、免费的 Python 科学计算环境。 阅读详情

相关推荐

UFS 3.1协议分析(第五章) -- UFS协议栈

ContentsUFS顶层架构应用层UFS命令集UFS 设备管理器UFS任务管理器传输层互连层 UFS顶层架构     UFS基于SCSI SAM架构模型定义了一个完整的协议栈,从上到下依次为应用层、传输层、数据链路层、物理层。UFS使用MIPI联盟的UniPro作为数据链路层和MIPI的M-PHY作为物理层,两者合起来称之为互连层(UFS InterConnect Layer) 应用层     应用层包括UFS命令集、设备管

Frank_sample的专栏 7367

IOS-透明NavigationBar

代码如下:     [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"transparent.png"] forBarMetrics:UIBarMetricsDefault];     self.navigationController.navigationBar.barSty

ipoolo的专栏 988

DPABI实战:手把手教你处理小鼠静息态fMRI数据(从Voxel Size到SPM完整流程)

本文详细介绍了使用DPABI处理小鼠静息态fMRI数据的完整流程,从Voxel Size调整到SPM分析,涵盖预处理、质量控制和可视化等关键步骤。针对小鼠数据特有的低分辨率和信噪比问题,提供了实战建议和避坑指南,帮助研究人员高效完成数据分析。

weixin_42663213的博客 476

IOS-DEMO1 PLLSlideToUnlock

描述:模仿开源组建完成的一个滑动解锁控件 效果如图: 思路如下: 1.重写redraw 绘制背景(2个圆圈)以及控件slider。 2.为slider新增panGesture 从而实现拖动效果。 3.gesture的相应函数根据不同情况回调delegate完成自定义状态修改。 注意: 1.redraw默认背景是黑色,需要改为白色。 2.之前对@property 的ass

ipoolo的专栏 910

人工势场法在自动驾驶避障中的实践与优化

本文深入探讨了人工势场法在自动驾驶避障中的核心原理与实践优化。通过解析引力与斥力模型,揭示了经典算法在局部最优和目标不可达等问题上的局限性,并重点介绍了改进斥力场函数、引入道路边界斥力及动态参数调整等关键优化策略,有效提升了该局部路径规划算法在复杂动态场景下的实用性与鲁棒性。

weixin_29208327的博客 926

Python中的串口通信库pyserial(基础)

pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。:flushInput方法用于清除输入缓冲区中的所有数据,flushOutput方法用于清除输出缓冲区中的所有待发送数据。:PySerial允许在创建Serial对象后,通过修改对象的属性来设置串口参数,如波特率、数据位、校验位和停止位。同时,也提供了方法或属性来检查串口的状态,如是否已打开。:sendBreak方法用于向串口发送一个BREAK信号,这可以用于向连接的设备发送一个中断或重置信号。

weixin_44217158的博客 1万+

IOS-DEMO4 scrapeAward/刮奖/脱衣服-进阶

普通版本完成的锯齿很严重 但是Ios系统中仅CGContextClearRect 并不存在cyclo等方法。 网上查了一些资料。 发现还是利用到了CG 中的Mask来实现 效果图: 这种效果可以自定义画笔的粗细等相关设置,不会像普通模式中出现比较严重的锯齿。 具体分析如下:      1.获取需要隐藏View的layer的CGImageRef用于后面配合掩码    

ipoolo的专栏 909

【中国大学生计算机设计大赛信息可视化赛道】国奖项目深入剖析—中国古代奇异怪兽移动端可视化应用项目

【中国大学生计算机设计大赛信息可视化赛道】国奖项目深入剖析—中国古代奇异怪兽移动端可视化应用项目 注:本文主要目的是对于往年国奖项目案例-可视化项目的深入剖析讲解,对源码、项目特点、要点、特色继续深入分析。帮助大家学习技术,掌握规律。

一键难忘的博客 3729

IOS-AutoLayout居中

最近写项目应为ip6 ip6+的原因

ipoolo的专栏 903

2026最新openclaw(clawbot/moltbot)真正在自己个人电脑上搭建部署,配置飞书远程远程让AI助理操控电脑完成任务,以及结合ollama无限token实现7*24小时工作(附配置)

2026最新openclaw(clawbot/moltbot)真正在自己个人电脑上搭建部署,配置飞书远程远程让AI助理操控电脑完成任务,以及结合 ollama 无限token实现7*24小时工作,以及部署安装需要的 skills 完成复杂的工作任务(附完整可以运行的配置文件)。 很多人已经会配置安装 openclaw 了 ,但是 安装完成之后真正让电脑自动运行起来的很好,完成出色工作的更少,最常见的就是聊聊天,或者执行一些简单的命令,理解要让电脑自动化工作,openclaw、skills、大模型这三样。

代码讲故事 2962

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 265

IOS-DEMO6 LayerMask

描述: 通过使用QuartzCore实现给layer添加mask 完成透明效果 此处mask只根据png图片的像素是否透明决定。 效果图: 掩码图: 下部灰色为透明  步骤:      创建layer      给layer设置大小为需要mask的layer的frame      将掩码图(png) 转成CGImage然后强转成id传入需要掩盖的layer

ipoolo的专栏 678

从后端角度浅谈抗辐射设计----三模冗余(TMR)

三模冗余设计(TMR),是最常用的一种容错技术,三个模块采取相同的操作,以多数相同的输出作为表决系统的正确输出,即3取2,因为三个模块是相互独立的,而其中两个模块同时出错的概率是极小的,因此便可保证系统输出的可信度。然而这个设计也会存在面积浪费,功耗的增加,而且由于是冗余的设计,在后续进行综合或者pr的时候会被工具优化,因此需要对模块进行don’t touch设置;通过增值表得到,逻辑关系表达式为:Q=(Q1&Q2)|(Q1&Q3)|(Q2&Q3),通过工艺库的stdcell进行搭建,得到如下电路。

芯冰乐 327

IOS-DEMO2 SliderToDeleteDemo

描述:项目中android用到的滑动删除。网上没找到类似就自己做了一个。 效果图: 思路:      思路1.每个cell里面加一个scrollView 这个可能消耗太大没尝试。      思路2.给cell中添加pan手势 完成中遇到的问题与长进:      1.复习了block与table那套轻量级的绑定 但是发现具体问题出现时需要修改的还是不少。        

ipoolo的专栏 676

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 164

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法

4G 功能机如何选择操作系统?本文梳理 KaiOS、Mocor、MAUI、PMAOS 四条路线的技术定位与能力边界,从市场认证、应用清单、芯片与 BSP、内存与整机成本、交付维护五个维度建立选型流程,并提供场景决策矩阵和签约前八项验证清单,帮助研发与产品团队区分平台宣称、演示能力与目标机型的实际交付能力。

PMAOS的博客 189

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

iOS 小组件开发,Windows 上用 KXBuild 加 WidgetKit 扩展 给 App 加 iOS 桌面小组件

iOS 小组件开发用 WidgetKit。这篇在 Windows 上用 KXBuild 的 add-target --type widget 给 SwiftUI 工程加一个桌面小组件扩展:写时间线和主屏小号/中号、锁屏圆形多种尺寸界面,用 App Group 和 App 共享数据,App 里调 WidgetCenter 主动刷新,按 F5 装到 iOS 17+ 的 iPhone 调试,再随 ipa 一起上架。以喝水打卡为例,附 App ID、描述文件准备和小组件不刷新、签名报错的排查。

2501_91600747的博客 189

安卓IOS打包证书

.p12 、 .mobileprovision 、 keystore 相关证书申请

weixin_58431406的博客 281

React Native项目开发(iOS侧为例)

本文基于React Native 0.71+,通过npx react-native init初始化项目后,详细讲解如何使用TypeScript搭建两个页面:入口页(Entrance.tsx)和我的页面(Profile.tsx)。重点介绍了配置tsconfig.json、初始化TypeScript环境、集成React Navigation实现页面跳转,并通过创建共享类型文件(navigation.ts)实现路由类型安全。文章还涵盖依赖安装、iOS构建问题排查、目录结构规范及常见错误解决方案。

D_xw_的博客 245

iOS 推送通知怎么实现,从 APNs p8 密钥到 iOS 真机收到第一条推送

iOS 推送通知要跑通,核心是 App ID 开通 Push Notifications 并重新生成描述文件、签名带上 aps-environment、再用 APNs 的 .p8 密钥签 JWT 把推送发到设备令牌。这篇用 KXBuild 按五步做:开能力、加 entitlements、代码里请求权限拿设备令牌、建 .p8 认证密钥、用一段 Node 脚本或 curl 走 HTTP/2 发测试推送,让 iPhone 弹出第一条通知。附拿不到令牌、APNs 报错码、TestFlight 收不到的排查。

2501_91591841的博客 239

[iOS]Runtime2

为了让你在父类中依然能访问当前对象(也就是子类的实例),编译器在底层会生成一个结构体,叫 : 当调用 时,底层调用的函数是 : 拿着(也就是当前的子类对象)作为消息接收者,但是把方法查找的起点定位在了 (父类)这里需要注意的就是仍然是调用者自己,即先讲一下上篇没讲过的,我们如果缓存未命中,那我们就会进入慢速查找,现在我们来详细的讲解在进入慢速查找的瞬间会再看一遍方法列表,然后立刻调用加锁,因为多线程下别人正在动态添加方法或者扩容,不加锁会崩溃类就绪OC的机制就是在编译期只生成了 结构,当类首次被发送消息时(

wzm20070304的博客 231

iOS App 图标、启动屏和多语言搭配 方法,上架前使用KXBuild一次做好 App 图标

上架前,iOS 的 App 图标、启动屏和多语言这三样配不齐,上传时就可能被拦或显示不对。这篇用 KXBuild 一次配好:图标只要一张 1024×1024、不带透明通道的 PNG,在资源目录编辑器里右键就生成全部尺寸,还支持 iOS 18 深色/着色和 Xcode 26 的 .icon;启动屏在 Info.plist 的 UILaunchScreen 填背景色和 Logo;界面文字、App 名称用 .xcstrings 翻译,商店信息再到 App Store Connect 按语言填。附上架前检查清单。

2501_91600889的博客 287

Appuploader 创建 iOS 描述文件详解,Development / Ad Hoc / App Store

搞不清 iOS 描述文件(Provisioning Profile)该选 Development、Ad Hoc 还是 App Store?本文讲清四种类型各装到哪、哪些要绑设备、能不能上架,重点辨析最容易混的 Development 与 Ad Hoc,说明设备或证书变动后为什么要重建、重建后要重新导入签名,并给出不用 Mac 在 Windows/Linux 上用 Appuploader 新建与重建描述文件的实操步骤,附装机"描述文件不匹配"等常见问题排查。

2501_91373349的博客 220

Windows 开发 iOS,Sign in with Apple 苹果登录,KXBuild 真机调试全流程

Sign in with Apple 接入分四步:App ID 开能力并重新生成描述文件,entitlements 加 com.apple.developer.applesignin,用 SignInWithAppleButton 拿 identityToken 交服务端验签,删账号时调 revoke。本文讲清审核指南 4.8 为什么要你提供它、姓名邮箱只给一次、用 user 当主键,并在 Windows 上用 KXBuild 真机测登录,附 1000 报错排查。

2501_91373349的博客 216

iOS 深度链接配置教程,URL Scheme 与 Universal Links,KXBuild 真机验证

深度链接两种:URL Scheme(myapp://)只改 Info.plist 的 CFBundleURLTypes;Universal Links(https://)要开 Associated Domains、在 entitlements 写 applinks 域名、网站放 /.well-known/apple-app-site-association。讲清两者怎么选、onOpenURL 处理代码,在 Windows 上用 KXBuild 装 Debug 包真机验证,附 CDN 缓存和十个不跳转排查。

2501_91600747的博客 274

手机远程控制电脑哪家强?2026年iOS/安卓/鸿蒙横评实测,ToDesk/向日葵谁更流畅

手机远程控制电脑已成刚需,ToDesk凭借全平台覆盖、低延迟、无广告、免费不限速等优势,成为最佳选择。其iOS、安卓、鸿蒙及Mac系统均支持,实测连接快、操作流畅,虚拟键盘、外接键鼠、互动批注等功能体验出色。相较之下,向日葵存在限时踢线、传输慢、广告多等痛点。选购建议:无论用何种手机,首选ToDesk,实现高效便捷的远程办公与协助。

lx08113的博客 285
上一篇: 将博客搬至优快云
下一篇: IOS-DEMO2 SliderToDeleteDemo
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值