iOS-画形状的view

Android View 仿iOS SwitchButton [Material Design] 自学android差不多有一年了,从最初的小白菜鸟,摸爬滚打,看大神们的博客,android官网的api,某网站的视频教学,github开源项目。奋斗这么久隐隐感觉自己可以脱离新手的身份了,交出这篇文章权当作andriod小学水准的毕业典礼。 iOS SwitchButton。 说实话功能也不过就个开关功能而已。但是为什么让人感觉不错,因为效果看起来赏心悦目呀: 好了,为了实现它,首先要分析它。 这个按钮被我玩来玩去最后静止的时候都会停留在下面的样子: 那么怎么把这个实现出来呢?观察一番会发现上图是极 阅读详情
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface UIView (Shape)

- (void)setShape:(CGPathRef)shape;
@end

#import "UIView+Shape.h"

@implementation UIView (Shape)

- (void)setShape:(CGPathRef)shape
{
    if (shape == nil) {
        self.layer.mask = nil;
    }
    
    CAShapeLayer* maskLayer = [CAShapeLayer layer];
    maskLayer.path = shape;
    self.layer.mask = maskLayer;
}

@end

@interface UIBezierPath (BasicShape)

+ (UIBezierPath *)cutCorner:(CGRect)originalFrame length:(CGFloat)length;
@end
#import "UIBezierPath+BasicShape.h"

@implementation UIBezierPath (BasicShape)

+ (UIBezierPath *)cutCorner:(CGRect)originalFrame length:(CGFloat)length
{
    CGRect rect = originalFrame;
    UIBezierPath *bezierPath = [UIBezierPath bezierPath];

    [bezierPath moveToPoint:CGPointMake(0, length)];
    [bezierPath addLineToPoint:CGPointMake(length, 0)];
    [bezierPath addLineToPoint:CGPointMake(rect.size.width - length, 0)];
    [bezierPath addLineToPoint:CGPointMake(rect.size.width, length)];
    [bezierPath addLineToPoint:CGPointMake(rect.size.width, rect.size.height - length)];
    [bezierPath addLineToPoint:CGPointMake(rect.size.width - length, rect.size.height)];
    [bezierPath addLineToPoint:CGPointMake(length, rect.size.height)];
    [bezierPath addLineToPoint:CGPointMake(0, rect.size.height - length)];
    [bezierPath closePath];
    return bezierPath;
}

@end
使用方法:在[UIView viewWillAppear:]方法中加入下面代码
[self.view setShape:[UIBezierPath cutCorner:self.view.bounds length:40].CGPath];

效果:




让自定义 Button 响应自定义 Shape 内的点击事件

#import <UIKit/UIKit.h>
#import "UIView+Shape.h"
#import "UIBezierPath+BasicShape.h"

@interface RFButton : UIButton{
    CGPathRef path;
}

@end
/
//  RFButton.m
//  ChristApp
//
//  Created by Haozhen Li on 13-12-6.
//
//

#import "RFButton.h"

@implementation RFButton

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

- (void)setShape:(CGPathRef)shape
{
    [super setShape:shape];
    path = shape;
}

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    if (CGPathIsEmpty(path)) {
        return YES;
    }
    //判断触发点是否在规定的 Shape 内
    if (CGPathContainsPoint(path, nil, point, nil)) {
        return YES;
    }
    return NO;
}
@end



iOS使用CG绘制相应形状的view 前言最近,新项目中,有些相应的需求,要在特殊形状的view中展示数据,然后里边还有些直线,虚线的结合,考虑到使用图片的话不是很好适配,因此这里研究总结了下,使用代码自己来实现相应的需求。开始 先来看下实现的效果图 然后,我们来开始实现它! 首先要了解: drawRect:方法的调用时机: 它是在init和viewDidLoad方法执行之后,才开始调用的,因此,我们可以在init方法中设置相应的参 阅读详情

相关推荐

IOS drawRect 自定义绘图,自定义任意类型的图形和动画

覆盖drawRect方法,你可以在此自定义绘画和动画,随意绘制自己想要的图像,矩形,长方形,边框圆,填充圆,无边框,弧线,椭圆,画贝塞尔曲线

iOS: 控制UIView的外形

#import &lt;UIKit/UIKit.h&gt; #import &lt;QuartzCore/QuartzCore.h&gt; @interface UIView (Shape) - (void)setShape:(CGPathRef)shape; @end #import "UIView+Shape.h" @implementation UIVie...

weixin_33998125的博客 176

蓝牙6.0的‘新雷达’:Channel Sounding信道探测,真能比UWB更香吗?

本文探讨了蓝牙6.0的Channel Sounding信道探测技术在室内定位领域的应用潜力。通过与UWB技术的对比分析,揭示了其在成本、功耗和兼容性方面的优势,特别是在智能门锁、物品追踪等场景中的商业价值。Channel Sounding技术不仅具备亚米级精度,还能通过现有蓝牙设备实现零边际成本部署,为物联网应用提供了新的解决方案。

weixin_29288313的博客 333

ios开发 自定义带弧度的UITabBar,保留系统原有push和pop过渡效果

一直想找个时间把自己所遇到的问题和解决思路写成博客,但都感觉“没时间”,最近几天闲着没事干,就琢磨着自定义一个带弧度的UITabBar,刚开始去网上搜了很多类似效果的文章,但感觉都不能满足自己想要的,但最终结合了各个前辈的思路,最终得以将遇到的一个个小问题解决。第一次写博客请大家多多指教。好了废话不多说,直接开干。 主要实现:1.自定义中间带弧度的UITabBar(参照代码思路可改成其它形状)。

mrtianxiang的博客 2115

基于OkHttp3+Retrofit2+RxJava3搭建响应式网络框架

本文介绍了一个基于OkHttp3+Retrofit3+RxJava3的响应式网络框架设计。该框架采用分层架构,OkHttp3负责底层网络请求,Retrofit3封装HTTP接口,RxJava3实现响应式流处理。核心亮点包括:1)高度解耦的分层设计;2)统一的异常处理和响应体封装;3)RxJava3实现线程切换和请求管理;4)MVVM架构适配,业务层只需关注数据逻辑。框架提供了完整的实现方案,包括全局配置、拦截器、响应转换、接口声明、仓库封装等组件,并支持生产环境扩展功能如Cookie持久化、Token刷新等

fuge2008的博客 872

用SOLIDWORKS从零画一个履带机器人,手把手教你搞定底盘和传动

本文详细介绍了如何使用SOLIDWORKS从零开始设计履带式机器人,重点讲解底盘结构优化和传动系统设计的关键步骤。通过七个阶段的实战指南,包括前期规划、底盘建模、驱动系统装配、履带生成、动态模拟等,帮助工程师和爱好者掌握履带机器人的核心设计技巧,提升地形适应能力和动力效率。

weixin_30872499的博客 632

半圆往view中间凹陷

/ 添加CAShapeLayer到白色的UIView的layer。// 设置CAShapeLayer的路径。// 创建一个CAShapeLayer。// 设置填充颜色为透明。

鱼儿的博客 262

机器学习参数寻优:方法、实例与分析

机器学习模型的性能很大程度上依赖于其参数的选择。参数寻优(Hyperparameter Tuning)是提升模型表现的关键步骤之一。本文将详细介绍主流的参数寻优方法,包括网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化(Bayesian Optimization)、和超参数优化库(如Optuna和Hyperopt)等,并探讨它们的优缺点及适用场景。

甜盐的博客 2843

教你把UIView切成任意形状

http://www.dreamingwish.com/dream-2012/%E6%95%99%E4%BD%A0%E6%8A%8Auiview%E5%88%87%E6%88%90%E4%BB%BB%E6%84%8F%E5%BD%A2%E7%8A%B6.html 有时候layer.cornerRadius并不能满足需求,自己实现drawRect又太麻烦,怎么办?...

weixin_33895604的博客 389

CAN总线数据采集与分析

在CAN总线数据采集中,数据采集是指从CAN网络中获取数据,并将其存储在本地或远程数据库中。数据源:明确数据源,如CAN总线、CANoe/CANalyzer工具等。数据格式:确定数据格式,如CAN消息、信号值、环境变量等。数据存储:选择数据存储方式,如本地文件、数据库、云存储等。在CAN总线数据分析中,数据分析是指对采集到的数据进行处理和分析,以提取有用的信息。数据处理:对采集到的数据进行处理,如滤波、去噪、归一化等。数据分析:对处理后的数据进行分析,如统计分析、趋势分析、故障诊断等。数据可视化。

闲人编程的博客 4045

微搭低代码实现用户登录及注册功能

在小程序开发中,我们可以拿到微信用户的openid,openid可以作为用户的唯一标识,在查询数据的时候可以进行数据过滤实现查询自己提交的数据。那微搭中是否也有openid这个概念,可以获取用户自己提交的数据呢? 答案是肯定的,那要怎么去做呢?思路是先创建一个数据源方法,在数据源中返回openid,然后低代码中可以调用数据源的方法并且赋值给全局变量,这样在后续的业务中从全局变量就可以获取openid了,方便做数据权限的控制。 为了实现这个目的,我们从创建数据源开始。 创建数据源 我们先创建一个用户管理的数据

低代码布道师的博客 3000

[iOS]绘制某一边或几边为圆弧的UIView

[iOS]绘制某一边或几边为圆弧的UIView demo:http://download.youkuaiyun.com/download/u012881779/10191931 拿到如图一这样的需求,需要绘制一个顶部为凹圆弧并能透明操作底部tableview的View。 #import "XZDrawHomeView.h" @implementation XZDrawHomeV

Gamin 8615

27930-2015+充电协议解析

对2015+充电与2015充电进行硬件电路对比、通信协议对比和2015+通信协议解析。

manjixingkong1234的专栏 238

ios 画带有箭头的线_ios纯色箭头与渐变色箭头的实现

UIView默认是矩形 我们可以通过重写drawRect来改变形状。图1_demo1、实现黑色箭头我们需要自定义一个view,在.m文件中实现如下代码:- (void)drawRect:(CGRect)rect {[super drawRect:rect];CGContextRef context =UIGraphicsGetCurrentContext();CGContextSaveGStat...

weixin_42517854的博客 434

DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命

随着人工智能技术蓬勃发展,DeepSeek 在太空探索领域展现出巨大应用潜力。本文深入剖析 DeepSeek 技术核心,包括低功耗运算、开源生态等优势,阐述其与传统航天技术的差异。从航天器自主控制、深空探测、载人航天等关键环节,结合实时轨道调整、故障诊断修复等实例,揭示 DeepSeek 对航天任务效率与安全性的提升作用。同时探讨其应用面临的太空环境适应、伦理安全等挑战,展望技术演进方向及与前沿技术融合前景,展现 DeepSeek 为人类太空探索带来的变革与深远意义。

邓邓子的博客 2259

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ios view 切上部分圆角_教你把UIView切成任意形状

http://www.dreamingwish.com/dream-2012/%E6%95%99%E4%BD%A0%E6%8A%8Auiview%E5%88%87%E6%88%90%E4%BB%BB%E6%84%8F%E5%BD%A2%E7%8A%B6.html有时候layer.cornerRadius并不能满足需求,自己实现drawRect又太麻烦,怎么办?多的不说,直接上代码:- (void)...

weixin_39652136的博客 563

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IOS-自定义锯齿形背景view,使用quartz2d

由于项目需要,UI设计了一个锯齿形状的背景图,程序开发效果如下图: 这用到了Quartz2D绘图,我的思路是,画两个如下图的锯齿view: 然后两个view稍微重合一点,就是下边的那个view网上移动,把上边的那个view的下锯齿覆盖掉,不过结果却是让人失望的,如下图: 最后,我在下边的view上重新画了上边view颜色的锯齿view,如下图: 然后再把下边的那个锯

Android小酌 4391

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

iOS 关于View的一切

iOS 关于View的一切 app展示给用户的页面,一般都是由windows和Views来展现的,windows基本上没有视觉上可以展示的内容,它是为views提供了一个容器,来承载views,而view是UIView的实例,它管理着window中的一块长方形区域,可以用来展示图片、文字、按钮以及它们的组合等等。 1、View view对象是UIView类的实例,用来展示可视化的内容。视图对象定义了一个矩形区域,并且负责该区域内容的绘制、事件的处理及子视图的布局。每个view对象都对应一个layer对象,l

onebutterfly 721

iOS 粘性view

类似QQ消息里的粘性消息数量,手指拖动消除等等。 也可以做类似的解压小游戏,大概就这样吧。我是封装一个view,所以所有的东西都是在自定义view中进行的。 目前考虑它是由三部分组成:使用pan手势,获取点位,然后改变上方圆的位置。 距离计算 很简单的数学公式计算两个点之间的距离。 后图大小改变 没什么难度,只需要根据极限距离计算出一个比例,然后改变缩放就行。 这里特意提出来只是我当时处理的时候,最开始考虑只是形变,但在画形状图层的时候遇到了点麻烦,后来改成了直接改变后圆的size。 形状图层 也就是两个圆

xinxin_0的博客 457

ios path绘制形状_使用UIBezierPath绘制自定义形状-iOS

ios path绘制形状Today we will try to draw custom shapes and views and try to find out more about drawings in iOS (Swift) and how that can be done through CODE. 今天,我们将尝试绘制自定义形状和视图,并尝试找到有关iOS(Swift)中图纸的更多信息...

weixin_26638123的博客 775

关于定制view的形状

重写drawRect后,设置layer的属性会失效,可能在drawRect中还会对layer进行改变 所以要设定view的边框形状有两种方法: 1、重写drawRect,用UIBezierPath等画出圆角矩形或者圆,然后addClips,将边框包裹住,最后要注意将view的背景色设置为透明。 2、不重写drawRect,初始化中改变view.layer的属性,可以变为圆角矩形,圆...

weixin_30951231的博客 173

自定义形状按钮的实现

其实这只是一个很小很小的知识点,却有很多人不会去考虑,所以就遇到了这样的情况偶然有一天,朋友给了我一套产品原型,他说叫我帮他写几个按钮,很简单的按钮,我当时感觉有坑,但是也没有想太多,想着本来这段时间有点闲,就帮下忙, 于是他发来原型图 哟,就是很简单的4+1个按钮蛮 先写4个正方形的九宫格式的按钮,再在中心加一个圆形按钮就好了呀. 于是接下来他又发来产品设计图 果然,

spicyShrimp的博客 2491

iOS开发-UIBezierPath裁剪图片成珠宝形状

iOS开发-UIBezierPath裁剪图片成珠宝形状之前的项目中用到了需要根据指定形状进行裁剪图片。

一名开发者 593

iOS Image Crop View

iOS-Image-Crop-View: 简洁高效的图像裁剪解决方案 是一个基于 Swift 的开源库,它为 iOS 开发者提供了一个简洁、高效且易于使用的图像裁剪视图,让您可以快速地在您的应用中实现自定义的图像裁剪功能。 项目简介 iOS-Image-Crop-View 提供了以下主要功能: 支持任意形状的裁剪区域; 支持实时预览裁剪效果; 裁剪后的图像可以自由缩放、旋转和移动; 提供丰富的 ...

gitblog_00012的博客 418

ios path绘制形状_绘制自定义ios标签栏形状

ios path绘制形状After reading an article on how to create a custom Android bottom-bar shape, I asked myself how to archive the same on iOS. Above is an image of the layout that I want to build. 阅读了有关如何创建自...

weixin_26735419的博客 279
上一篇: 这周就分享一个链接吧,面试100道题
下一篇: 实现iOS语言本地化/国际化(图文详解)
董其林
博客等级 码龄11年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值