×

masonry s

masonry 优先级怎么使用?MSOcache是什么文件如何删除msocache文件夹

admin admin 发表于2022-05-07 12:02:41 浏览103 评论0

抢沙发发表评论

masonry 优先级怎么使用

自动布局最重要的是约束:UI元素间关系的数学表达式。约束包括尺寸、由优先级和阈值管理的相对位置。它们是添加剂,可能导致约束冲突 、约束不足造成布局无法确定 。这两种情况都会产生异常。

使用前:AutoLayout关于更新的几个方法的区别

setNeedsLayout:告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。

layoutIfNeeded:告知页面布局立刻更新。所以一般都会和setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。-masonry

layoutSubviews:系统重写布局

setNeedsUpdateConstraints:告知需要更新约束,但是不会立刻开始

updateConstraintsIfNeeded:告知立刻更新约束

updateConstraints:系统更新约束

使用

  1. 基本使用

  2. mas_makeConstraints:添加约束

  3. mas_updateConstraints:更新约束、亦可添加新约束

  4. mas_remakeConstraints:重置之前的约束

  5. multipler属性表示约束值为约束对象的乘因数, dividedBy属性表示约束值为约束对象的除因数,可用于设置view的宽高比

  6. // 进行屏幕的适配的时候,往往需要根据屏幕宽度来适配一个相应的高度,在此使用如下约束的方式来进行控件的适配

  7. [self.topView addSubview:self.topInnerView];

  8. [self.topInnerView mas_makeConstraints:^(MASConstraintMaker *make) {

  9. make.height.equalTo(self.topView.mas_height).dividedBy(3);

  10. make.width.and.height.lessThanOrEqualTo(self.topView);

  11. make.width.and.height.equalTo(self.topView).with.priorityLow();

  12. make.center.equalTo(self.topView);

  13. }];

  14. priorityLow()设置约束优先级

  15. #define MAS_SHORTHAND_GLOBALS使用全局宏定义,可以使equalTo等效于mas_equalTo

  16. #define MAS_SHORTHAND使用全局宏定义, 可以在调用masonry方法的时候不使用mas_前缀

  17. // 这里注意到一个地方,就是当使用了这个全局宏定义之后,发现可以有个类`NSArray+MASAdditions.h`,看了之后发现可以

  18. self.buttonViews = @[ raiseButton, lowerButton, centerButton ];

  19. // 之后可以在updateConstraints 方法中

  20. - (void)updateConstraints {

  21. [self.buttonViews updateConstraints:^(MASConstraintMaker *make) {

  22. make.baseline.equalTo(self.mas_centerY).with.offset(self.offset);

  23. }];

  24. [super updateConstraints];  

  25. }

动态修改视图约束:

// 创建视图约束

[blueView mas_makeConstraints:^(MASConstraintMaker *make) {

self.animatableConstraint = make.edges.equalTo(superview).insets(paddingInsets).priorityLow();

]];

// 更改约束 (另一处方法中)

UIEdgeInsets paddingInsets = UIEdgeInsetsMake(padding, padding, padding, padding);

self.animatableConstraint.insets = paddingInsets;

[self layoutIfNeeded];

debug模式:

// 对某个view添加key值

greenView.mas_key = @“greenView“;

// 或者如下顺序

MASAttachKeys(greenView, redView, blueView, superview);

// 同样的对每条约束亦可以添加key

make.height.greaterThanOrEqualTo(@5000).key(@“ConstantConstraint“);

preferredMaxLayoutWidth: 多行label的约束问题

// 已经确认好了位置

// 在layoutSubviews中确认label的preferredMaxLayoutWidth值

- (void)layoutSubviews {

[super layoutSubviews];

// 你必须在 [super layoutSubviews] 调用之后,longLabel的frame有值之后设置preferredMaxLayoutWidth

self.longLabel.preferredMaxLayoutWidth = self.frame.size.width-100;

// 设置preferredLayoutWidth后,需要重新布局

[super layoutSubviews];

}

scrollView使用约束的问题:原理通过一个contentView来约束scrollView的contentSize大小,也就是说以子控件的约束条件,来控制父视图的大小

// 1. 控制scrollView大小(显示区域)

[self.scrollView makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(self.view);

}];

// 2. 添加一个contentView到scrollView,并且添加好约束条件

[contentView makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(self.scrollView);

// 注意到此处的宽度约束条件,这个宽度的约束条件是比添加项

make.width.equalTo(self.scrollView);

}];

// 3. 对contentView的子控件做好约束,达到可以控制contentView的大小

新方法:2个或2个以上的控件等间隔排序

/**

*  多个控件固定间隔的等间隔排列,变化的是控件的长度或者宽度值

*

*  @param axisType        轴线方向

*  @param fixedSpacing    间隔大小

*  @param leadSpacing     头部间隔

*  @param tailSpacing     尾部间隔

*/

- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType 

withFixedSpacing:(CGFloat)fixedSpacing l

eadSpacing:(CGFloat)leadSpacing 

tailSpacing:(CGFloat)tailSpacing;

/**

*  多个固定大小的控件的等间隔排列,变化的是间隔的空隙

*

*  @param axisType        轴线方向

*  @param fixedItemLength 每个控件的固定长度或者宽度值

*  @param leadSpacing     头部间隔

*  @param tailSpacing     尾部间隔

*/

- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType 

withFixedItemLength:(CGFloat)fixedItemLength 

leadSpacing:(CGFloat)leadSpacing 

tailSpacing:(CGFloat)tailSpacing;

使用方法很简单,因为它是NSArray的类扩展:

//  创建水平排列图标 arr中放置了2个或连个以上的初始化后的控件

//  alongAxis 轴线方向   固定间隔     头部间隔      尾部间隔

[arr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:20 leadSpacing:5 tailSpacing:5];-s

[arr makeConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(@60);

make.height.equalTo(@60);

}];

MSOcache是什么文件如何删除msocache文件夹

系统中总是在盘中出现MSOCache这样一个隐藏的文件夹还很大,我们来看看这个文件夹的产生与作用。如果满足以下条件,安装源文件将被从安装媒体复制到您的本地硬盘上的Msocache文件夹: •其中一个可用硬盘驱动器具有1.5GB以上的可用磁盘空间。•具有足够空间的硬盘不是可移动驱动器或网络驱动器。如果您要删除Msocache文件夹,可以在Office安装期间或Office安装之后执行此操作。删除这些文件将节省大约270MB的硬盘空间。删除Msocache文件夹后,您可能必须提供安装媒体才能完成前面列举的安装操作。msocache是什么文件夹这是Offiece的本地安装源(Msocache)。“本地安装源”是一种安装功能,它将安装源文件从MicrosoftOffice2003安装媒体(例如Office2003光盘)复制到Msocache文件夹。一般情况,采用NTFS格式分区的D盘有这样一个文件,且隐藏,通常有几百兆。当然我们在安装Office2003的时候就会生出这个文件夹,如果不想生成msocache文件,必须在装光盘里FILESSETUPSETUP.INI文件,把[Cache]那个小节下面的CDCACHE=AUTO修改为CDCACHE=0,保存,然后重新刻盘即可。一般用户不敢删除这个文件,就是不知道是什么类型文件。但是msocache文件到底可不可以删除?答案是是可以的。当你安装office之后,删除msocache文件夹具体步骤如下:1、单击“开始”,依次指向“所有程序”、“附件”、“系统工具”,然后单击“磁盘清理”。2、在“选择驱动器”对话框中的“驱动器”列表中,单击“C:”,然后单击“确定”。3、等待磁盘清理工具完成对该驱动器的检查。4、在“要删除的文件”列表中,单击以选中“Office安装文件”复选框,然后单击“确定”。(注意:如果Office安装文件的大小为零,则Office安装文件位于另一硬盘上)。5、询问是否删除时消息时,请单击“是”这样就删除了该文件。删除msocache文件夹一.在安装期间删除Msocache文件夹在Office2003安装期间,在“安装已完成”页中,单击以选中“删除安装文件”复选框,然后单击“完成”。在Office安装之后删除Msocache文件夹在Office安装之后,您可以使用Windows清理向导删除Msocache文件夹。二.在Office 安装之后删除Msocache 文件夹注意切毋使用Microsoft Windows 资源管理器删除MSOCACHE 文件夹,可以使用Windows 清理向导删除Msocache 文件夹。步骤:1.单击“开始”,依次指向“所有程序”、“附件”、“系统工具”,然后单击“磁盘清理”。2.在“选择驱动器”对话框中的“驱动器”列表中,单击“C:”,然后单击“确定”。注意:如果您有多个硬盘,Office 安装文件将位于在Office 安装期间具有最多可用空间的分区中。3.等待磁盘清理工具完成对该驱动器的检查。4.在“要删除的文件”列表中,单击以选中“Office 安装文件”复选框,然后单击“确定”。注意:如果Office 安装文件的大小为零,则Office 安装文件位于另一硬盘上。5.在收到以下消息时,请单击“是”:Are you sure you want to delete these files?(确定要删除这些文件吗?)注意:(1)如果您的硬盘上有多个分区,您可能必须对每个分区重复这些步骤。(2)MSOCACHE 文件夹不总是位于可用空间最多的硬盘驱动器上。如果您计算机的NTFS 驱动器至少具有1.5 GB 的可用空间,MSOCACHE 文件夹将位于该NTFS 驱动器中。

如何使用SSH做中转S5代理

我们的外部防火墙阻止了一些常用端口,现在打开的只有22 80 和443 也就是ssh ssh -L 就是做这个事情的 例如 我想将本地的3306端口上的流量通过ssh23端口转发到目标主机的9999端口上可以使用