标签:
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender { UIMenuController *menuController = [UIMenuController sharedMenuController]; if (menuController) { [UIMenuController sharedMenuController].menuVisible = NO; } return NO; }
self.btn.transform = CGAffineTransformMakeTranslation(0, 100); self.btn.transform = CGAffineTransformMakeScale(1.5, 1.2);
这样操作是创建新的transform然后赋值,给按钮的transform,第二次赋值的会把之前赋值的给覆盖,所以会达不到想要的效果。
解决办法:
self.btn.transform = CGAffineTransformMakeTranslation(0, 100); // 在之前的transform情况下,继续添加缩放的形变。 self.btn.transform = CGAffineTransformScale(_btn.transform, 1.2, 1.2);
2.UIButton添加到UILabel,UILabel就是UIButton的父视图,父视图不能监听点击事件,自然不将事件传递给子视图,UIButton也不能监听点击事件了。
拓展:
因为我们一般在父类里实现的都是一些共用的属性和方法,而在子类中具体实现子类特有的方法。
因此在UIControl实现了监听点击的特有方法,即继承UIControl才能监听点击事件。
4.XIB的使用技巧
Xib是用来描述视图长什么样子,一个项目中允许有很多xib,因此我们需要给xib绑定一个标识,即他View中对应的class是谁,就代表描述哪个class。
Xib中owner的class是用来告诉xib中的View需要调用哪个对象的方法,就填谁。比如需要调用dog类中的方法,就填dog。
注意:在连线选择上别连错了,
步骤一:先考虑自己是想给视图添加控件了还是想给视图添加事件
步骤二:添加控件就跟xib中的view连线。添加一些事件就给xib中的File’s Owner 连线。
- (UIView *)viewWithTag:(NSInteger)tag { // 1.如果当前tag和当前视图tag相同,直接返回 if (self.tag == tag) return self; // 2.如果和当前视图tag不相同,遍历当前视图的所有子控件,查找对应的tag。 for (UIView *view in self.subviews) { // 3.如果view不是UIView类或者UIView的子类直接返回nil if (![view isKindOfClass:[UIView class]]) return nil; if (tag == view.tag) { // 4. 返回有相匹配的视图 return view; } } // 5.如果都没有找到,返回nil. return nil; }
7.返回的数组后面调用copy方法的原因
1.可以建立一个不可变的数组,外界无法修改
2.否则外面可以通过id或者其他的方法修改数组内容不够安全
8.视图绘制方法注意点
- (void)drawRect:(CGRect)rect;
如果想要调用这个方法,必须视图在初始化的时候就设置尺寸,否则不会调用这个绘图方法
这样不会调用
ZYHButton *view = [[ZYHButton alloc] init];
必须在创建的时候就设置尺寸,如下:
ZYHButton *view = [[ZYHButton alloc] initWithFrame:CGRectMake(0, 0, 45, 25)];
标签:
原文地址:http://www.cnblogs.com/hongShuShu/p/4513250.html