我想知道如何以正确的方式使用这些属性.
据我所知,frame可以从我正在创建的视图的容器中使用.它设置相对于容器视图的视图位置.它还设置该视图的大小.
也center可以从我正在创建的视图的容器中使用.此属性更改视图相对于其容器的位置.
最后,bounds是相对于视图本身.它会更改视图的可绘制区域.
你能给约之间的关系更多信息frame和bounds?那些clipsToBounds和masksToBounds属性呢?
UIView有属性frame,bounds,center,和origin,他们都似乎是相互关联的.大多数时候,我frame在设置a的位置和大小时处理UIView.据我所知,这frame是使用全局坐标系并bounds使用局部视图的坐标(因此它的x和y为0,但并非总是如此),但是在使用什么时我仍然会感到困惑.
在什么情况下(和什么是正确的时间)的其他属性(bounds,center,origin)应使用?
我在iOS 7和iOS 8中运行了以下代码:
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
BOOL landscape = (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight);
NSLog(@"Currently landscape: %@, width: %.2f, height: %.2f",
(landscape ? @"Yes" : @"No"),
[[UIScreen mainScreen] bounds].size.width,
[[UIScreen mainScreen] bounds].size.height);
Run Code Online (Sandbox Code Playgroud)
以下是iOS 8的结果:
Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 568.00, height: 320.00
Run Code Online (Sandbox Code Playgroud)
与iOS 7中的结果相比:
Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 320.00, height: 568.00
Run Code Online (Sandbox Code Playgroud)
是否有任何文件指定此更改?或者它是iOS 8 API中的临时错误?
你怎么能为UIButton和旋转文字UILabel?90度,180度.
注意:在将此标记为重复之前,我有意将我的问题建模为此问题的Swift版本:如何在Objective-C中为UIButton和UILabel旋转文本?
我想将多个变换应用于UIView(或子类UIView),例如平移,旋转和缩放.我知道可以应用两个变换CGAffineTransformConcat,但是如果我有三个或更多变换,我该怎么做?
我看过这些问题:
但是这些问题正在问一些不同的东西,给出的答案只是谈论应用两个变换CGAffineTransformConcat.此外,他们使用Objective-C而不是Swift.
边界和边框之间有什么区别?事实上,为什么"界限"甚至存在?'bounds'的大小等于帧的大小,bound的起源应始终为0,0.
谁知道?我找到了一些答案,但是太复杂而且太深了.我需要一个简单的答案.
在我的iPhone OS应用程序中,我希望(需要)观察设备方向的变化,以便重新排列屏幕的某些部分.我使用的方法是用来CGRect frame = [UIScreen mainScreen].applicationFrame获取屏幕大小,并从那里计算其他控件的大小和/或位置(我也尝试过self.view.frame).
所有测试都是在Portrait模式下完成的,所以我可以专注于编写主要功能,然后再对Landscape进行一些调整.这里输入问题:-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation我在继续之前添加了一些日志来检查大小,但显然宽度和高度的值是"错误的"(我说"错误",因为乍一看这些值对我来说没有意义) .
这是一些日志记录的输出:
Landscape中"w"和"h"的值似乎与我相反 - 我期待w = 480和h = 300.
我究竟做错了什么?我用来调试的代码如下.
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = [UIScreen mainScreen].applicationFrame;
CGSize size = frame.size;
NSLog(@"%@", [NSString stringWithFormat:@"Rotation: %s [w=%f, h=%f]",
UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? "Portrait" : "Landscape",
size.width, size.height]);
}
Run Code Online (Sandbox Code Playgroud) 来自UIImage参考,
尺寸
图像的尺寸,考虑方向.(只读)
@property(nonatomic, readonly) CGSize size
Run Code Online (Sandbox Code Playgroud)
讨论
在iOS 4.0及更高版本中,此值反映图像的逻辑大小,并以磅为单位进行测量.在iOS 3.x及更早版本中,此值始终反映以像素为单位测量的图像尺寸.
像素和点之间有什么区别?
在写这个问题之前,我已经
但是,我仍然无法理解如何在图层上进行基本变换.寻找翻译,旋转和缩放的解释和简单示例一直很困难.
今天我终于决定坐下来,做一个测试项目,然后把它们搞清楚.我的答案如下.
笔记: