iOS常见问题(1)

时间:2023-03-09 09:56:25
iOS常见问题(1)

一、storyboard连线问题

iOS常见问题(1)

iOS常见问题(1)

产生原因:将与storyboard关联的属性删除了,但是storyboard中还保持之前所关联的属性。

解决:

  1、点击view controlleriOS常见问题(1)

  2、点击这排最后一个按钮iOS常见问题(1)

  3、会出现iOS常见问题(1)

  4、发现感叹号。点击感叹号的左边的x,取消关联就不会报错了。

二、文本框中怎么输入显示类似输入密码时候的东东。

  解决:勾选这个iOS常见问题(1)

三、输入文本的时候,怎么显示右边的X按钮

  1.点击iOS常见问题(1)

  2.会显示iOS常见问题(1)

   3.选择iOS常见问题(1),表示当编辑的时候,会出出现X。

   效果:iOS常见问题(1)

四、Storyboard连线问题。

  iOS常见问题(1)

  报错原因:1.没有实现btnClick这个方法。

  解决方式一:添加这个btnClick这个方法

  解决方式二:

  1.点击view controlleriOS常见问题(1)

  2.点击这排最后一个按钮iOS常见问题(1)

  3.会出现iOS常见问题(1)

  4.发现感叹号没,和之前一样,x了它,就哦了。注意点;OC中冒号也算做方法名的一部分喔,记住!

五、结构体问题

  iOS常见问题(1)

  报错原因:OC语法规定:不允许直接修改某个对象的结构体属性的成员

  _btn 是个对象

  frame是个结构体。

  对象和结构体是不一样的,结构体是C语言中的,里面可以定义许多属性,但是不能定义方法,而对象是即可以定义属性又可以定义方法的,是典型的面向对象语法。

  如何改变对象中结构体属性的成员:

  解决方法一:

 // 既然不能直接修改对象中的结构体属性成员
// 先取出结构体
CGRect frame = _btn.frame;
// 修改结构体
frame.origin.y -= ;
// 将修改后的结构体重新赋值回去
_btn.frame = frame;

  解决方法二:

 // 先取出y值
CGFloat y = _btn.frame.origin.y;
// 修改y值
y -= ;
// 重新设置_btn的y值,其他属性和_btn保持不变
_btn.frame = CGRectMake(_btn.frame.origin.x, y, _btn.frame.size.width,_btn.frame.size.height);

六、Id问题

  iOS常见问题(1)

  报错原因:id类型不能使用点语法

  解决方式一:

// 利用get方法获取tag值
NSInteger i = [sender tag];

  解决方式二:

// 将id强转为UIButton
UIButton *button = (UIButton *)sender;
// 就能使用点语法获取tag,编译器很笨的,他只会根据当前类型,去判断是否能使用这个语法。一般强转为对应类型,就能使用对应类型的方法了。
NSInteger i = button.tag;

七、如果发现给控件设置transform属性,控件没有任何反应,或者反应了,但是效果不对。

  解决方法:iOS常见问题(1)将这个选项取消勾选。

八、如果想让同一个控件同时即改变位置的移动,又放大。这样设置是无效果的。

_btn.transform = CGAffineTransformMakeTranslation(, );
_btn.transform = CGAffineTransformMakeScale(1.2, 1.2);

  这样操作是创建新的transform然后赋值,给按钮的transform,第二次赋值的会把之前赋值的给覆盖,所以会达不到想要的效果。

  解决方法:

_btn.transform = CGAffineTransformMakeTranslation(, );
// 在之前的transform情况下,继续添加缩放的形变。
_btn.transform = CGAffineTransformScale(_btn.transform, 1.2, 1.2);

九、四舍五入问题。

 float i = 1.7;
// 会自动四舍五入,不保留小数
NSLog(@"%0.f",i); // 打印结果2
// 强转类型不会四舍五入
int j = (int)i;
NSLog(@"%d",j); // 打印结果1

十、优先级问题

 int b = ;
int a = * (b == ? :);
NSLog(@"%d",a); //打印出4
int a = * b == ? :;
NSLog(@"%d",a); //打印出2
//由此得出 * 比 == 优先级高,先算*,在算==