01-UI基础

2016-11-02  本文已影响3人  cdd48b9d36e0

<h3>1. 0529-10</h3>
scrollView可以直接对imageView进行缩放
在viewDidLoad设置缩放比例

self.scrollview.maximumZoomScale = 2.0;
self.scrollview.minimumZoomScale = 0.2;

在UIScrollViewDelegate协议方法里的返回值决定了要缩放的内容(返回值只能是UIScrollView的子控件)

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    return self.imageView;
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
    NSLog(@"缩放ing-----%f", scrollView.zoomScale);
}

<h3>2. 0529-11</h3>
xib创建的文件直接在该类的m文件中写个类方法把xib文件的加载方法屏蔽起来

+ (instancetype)pageView
{
    return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject];
}

<h3>3. 0529-11</h3>
四舍五入算法

(int)(scrollView.contentoffset.x / scrollView.frame.size.width + 0.5)

<h3>4. 0529-12</h3>
封装的自定义控件对其子控件设置frame集中到layoutSubviews方法里,该方法是在self.frame发生改变后,下一个消息循环开启时调用,注意这句话的三个关键词frame、改变、下一个消息循环

- (void)layoutSubviews{
    // 一定要先调用父类的方法
    [super layoutSubviews];
    // TODO 设置所有imageView的frame
}

<h3>5. 0530-02</h3>
用alloc init加载xib的时候,控制器的allocinit可以加载xib,控件allocinit不能
<h3>6. 0530-04</h3>
快速移除一个控件上的子控件(在封装子控件时要考虑到重复set的情况,所以每次应该先移除)

[self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]

<h3>7. 0530-05</h3>
autoresizing是已经淘汰的技术,他的缺陷是只能约束子控件和父控件的关系,而不能约束兄弟控件之间的关系,而且现在要使用时必须关闭autolayout和autoclass
<h3>8. 0530-10</h3>
让Label自适应文字高度直接添加约束就可以。步骤一设置numbersOfLines为0,步骤二设置坐标x、y和width,高度不用设置;自适应宽度跟自适应高度全部一样,只有一个地方,把宽度的equal改为less than
<h3>9. 0530-10</h3>
让父控件高度随着子控件高度改变而改变
<h3>10. 0530-10</h3>
程序中要改变控件的frame时,🍎的建议是直接改约束而不是改frame,因为后者会产生不可预测的冲突,故正确的方法是对约束进行拖线,然后改变约束变量的值

self.spacingContraint.constant = 50;
self.widthContraint.constant = 100;
[UIView animateWithDuration:2 animations:^{
   //注意,这里要用所改变的控件的父控件来调用layoutIfNeeded
   [self.view layoutIfNeeded];
}];
上一篇 下一篇

猜你喜欢

热点阅读