在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:kukumaluCN/JXT_iOS_Demos开源软件地址:https://github.com/kukumaluCN/JXT_iOS_Demos开源编程语言:Objective-C 100.0%开源软件介绍:JXT_iOS_Demos一些iOS相关的测试Demo汇总 2018.11.22 JXTKit-jxt_rangeValuesOfString:2018.11.16 PerformSelectorDemo2018.8.13 RandomStringForTest随机字符串,用于开发测试,文章详见: 随机内容字符串 2018.8.9 StructForLayoutDemo结构体在iOS布局常数的设置中的使用,文章详见: 用结构体初始化大量布局常数 2018.7.9 FindAllEnumOptions对于位移运算的枚举定义: typedef NS_OPTIONS(NSUInteger, MyOptions) {
MyOptions_0 = 1 << 0,
MyOptions_1 = 1 << 1,
MyOptions_2 = 1 << 2,
MyOptions_3 = 1 << 3,
MyOptions_4 = 1 << 4,
MyOptions_5 = 1 << 5,
MyOptions_6 = 1 << 6,
MyOptions_7 = 1 << 7,
MyOptions_8 = 1 << 8,
}; 如何遍历取出一个位移类型的枚举值,例如: MyOptions nowOption = MyOptions_0 | MyOptions_1 | MyOptions_2 | MyOptions_3 | MyOptions_4 | MyOptions_5 | MyOptions_6 | MyOptions_7 取出这个值的每一项,提供一种算法: MyOptions startOption = MyOptions_0; //不变的起点
MyOptions currentOption = MyOptions_0;
MyOptions nowOption = MyOptions_0 | MyOptions_1 | MyOptions_2 | MyOptions_3 | MyOptions_4 | MyOptions_5 | MyOptions_6 | MyOptions_7 | 512;
uint offset = 0;
while (nowOption) {
//如果存在
if ((nowOption & currentOption) == currentOption) {
NSLog(@"- MyOptions_%d = %zd", offset, currentOption);
//删除当前的
nowOption ^= currentOption;
}
//继续下一个位移
currentOption = startOption << (++offset);
} 这个算法的好处是,设定好起始值,后期维护更新枚举定义,算法基本可以不变。 2018.4.8 RemoveSingleElementFromArrayDemo数组执行元素删除,会删除相同的所有元素值,而不是只删除单个。 NSArray <NSNumber *>*totalArray = @[@1, @2, @2, @3, @3, @3, @4, @4, @4, @4];
NSArray <NSNumber *>*removeArray = @[@2, @3, @4];
NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
[removeArray enumerateObjectsUsingBlock:^(NSNumber * _Nonnull removeItem, NSUInteger removeIdx, BOOL * _Nonnull removeStop) {
[totalArray enumerateObjectsUsingBlock:^(NSNumber * _Nonnull totalItem, NSUInteger totalIdx, BOOL * _Nonnull totalStop) {
//匹配,如果已经记录index,排除
if ([removeItem isEqualToNumber:totalItem] && ![indexSet containsIndex:totalIdx]) {
[indexSet addIndex:totalIdx]; //记录index
*totalStop = YES; //停止遍历
}
}];
}];
NSLog(@"indexSet - %@", indexSet);
NSMutableArray <NSNumber *>*testArray = [NSMutableArray arrayWithArray:totalArray];
[testArray removeObjectsAtIndexes:indexSet];
NSLog(@"removeObjectsAtIndexes - %@", testArray); 2018.1.30 WeakStrongDanceDemo关于 #define WeakSelf(type) __weak typeof(type)weak##type = type
#define StrongSelf(type) __strong typeof(type)type = weak##type 这两个宏在WeakStrongDance中的应用和解释。
2018.1.26 AboutTimeForiOSDemo关于
2017.9.25 IfNilTest
2017.9.25 DoWhile0MacroTest在一些宏定义中,经常能看到
2017.9.18 ViewBoundsInitErrorTest一个view初始化时,宽高给负值,那么其bounds会变为(-宽,-高,宽,高),改变一个view的bounds,其本身不会有影响,但是会影响其子视图的布局,因为子视图相对于其的左边原点改变了,父视图的左上角坐标为负值,那么子视图相对的布局原点一定要偏右下,这样会造成隐式的布局bug,尤其是在view动态初始化时,宽高动态计算,值不确定,这样的bug会很隐蔽,难以定位。 2017.9.11 GlobalStaticValueTest如果在头文件(.h)中定义static修饰的变量,意味着什么呢?全局变量吗?首先编译时不会报错的,但是这并不是一种正确的或者说是恰当的写法,真正的全局变量是用extern来修饰定义的。
2017.7.31 TableViewCellAnimationTest一种给TableView的Cell添加动画效果的简单方式,动画效果可自行定义,下面是示例代码,效果见Demo。 #pragma mark - Cell Animation
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
CGPoint center = cell.center;
CGPoint orgCenter = center;
center.x -= cell.bounds.size.width;
cell.center = center;
[UIView animateWithDuration:0.5 animations:^{
cell.center = orgCenter;
}];
} 2017.6.14 JXTTwinkleStarView一种星光闪烁的伪粒子效果的实现,利用CA动画+随机数+延时,可以适用于简单的使用场景。该视图实现提供两种外观形状,可根据不同场景调节使用,方法实现较为简陋,没有特定的封装,可以参考下。 2017.5.23 AnimationBlockDelegateTest利用block将 moveAnimation.delegate = [JXTAnimationBlockDelegate animationBlockDelegateWithAnimationDidStart:^{
NSLog(@"start");
} animationDidStop:^(BOOL finished) {
NSLog(@"stop - %zd", finished);
}];
2017.5.18 KVOForInstanceVarTestKVO监听实例变量的实现
2017.3.14 ClassPropertyTest关于xcode8新增的“类属性”的简单应用。
2017.3.13 PassthroughView一种可带自身响应且可事件穿透的视图的实现。类似于UIPopoverController的passthroughViews属性。
2017.3.9 AddSubviewToLayout关于 2017.3.4 JXT_MVC_Demo
2017.3.3 CategoryDuplicationProperty使用系统的分类扩展自己的属性和方法时,命名一定要注意规范,一定要添加自己对应的前缀作为“命名空间”标识,即使是不同类的属性也不可和系统属性重名,否则会直接覆盖系统属性或方法,常规的UI层的覆盖可能产生直观的bug易于查找,但是数据层的,就是很难查找的隐患了。 2017.3.2 MVCDemo运用MVC架构,将TableView和VC解耦的一次尝试,将DataSource从VC分离。将参考文章中的方案做了调整。
2017.2.16 ChildViewControllerTest关于ChildViewController的简单使用。
2017.2.10 ThreadArrayTest关于多线程操作数组的安全性问题,关于多线程的几种使用方式的测试。
2017.2.8 Quartz2DDemoQuartz2D简单入门,一些绘图的基本方法。
2017.1.20 CategoryDelegateUnsafeTest在分类中添加系统API对应的协议方法是不安全的。 2017.1.12 DelegateOptimizeTest利用位段(位域)优化协议方法回调,提升性能。 2017.1.9 NSErrorTest关于NSError的一些简单使用场景,探索error作为输出参数(NSError**)的使用原理。 2017.1.6 KVCTest一些关于KVC的简单实用
2016.9.25 CAAnimationDelegateTestiOS10 CAAnimationDelegate的“适配”
2016.3.21 JXTAboutNavigationBar一些关于navigationBar的非常规的但是较为实用的操作,包括利用毛玻璃、动态透明、动态隐藏,以及头视图的动态缩放,并同时涉及了statusBar的动态设置(换色)。 2016.3.6 JXTAlertView一种带输入框的自定义alertView的简易封装实现 2016.2.23 CountDownButton一种带倒计时显示的按钮的简易实现逻辑 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论