我正在构build一个专门用于iPhone的应用程序,它只有一个肖像视图。 我以前从来没有用过自动布局,现在也没有时间去学习。 我可以使用其他任何东西,让我的意见调整自己的设备(iphone 4s,5 / 5s,6/6 +)?
在我的自定义视图控制器中,我重写loadView以编程方式设置我的视图层次结构。 为了支持自动旋转,我为层次结构中的所有视图的autoresizingMask属性分配了一个合适的值 – 除了根视图(我分配给self.view视图)之外。 尽pipe没有这个省略,调整自动旋转function是完美的(感觉非常好,终于可以这样说了)。 我已经在各种模拟器,以及我的iPhone和iPad设备上进行testing。 有谁知道这是为什么? 这种行为只是“运气”,还是由苹果某处正式logging? (注:我主要是出于好奇而问,请不要告诉我“去修复它,只是一行代码” – 我已经这么做了。)
我发现了很多关于自动调整的信息,但是没有一个能够解决我的问题。 我有一个ViewController(RAViewController)在其loadView方法中调用视图,如下所示: – (void)loadView { // Set Navigation Bar Title self.navigationItem.title = @"RA"; // Add Background view self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Add RAView RAView *rAView = [[RAView alloc] initWithFrame:self.view.frame Controller:self]; [self.view rAView]; } 它调用的视图(RAView)如下所示: – (id)initWithFrame:(CGRect)frame Controller:(RAViewController *)Controller { self = [super initWithFrame:frame]; if (self) { // Initialization code self.autoresizesSubviews = […]
我有一个笔尖,我最初为一个尺寸为320×480的iPhone应用程序创build,如果它的超级视图很大,并且设置了自动修复蒙版,可以在每个方向上展开视图。 我现在正在使我的应用程序具有通用性,并且使用相同的笔尖并将其显示在iPad的页面上。 我的问题是,我根据帧尺寸进行了一些计算,仍然显示320×480。 但在其他方法中,框架大小正确显示为页面大小。 问题:什么时候自动修复面具生效,以便我可以在正确的时间进行计算?
我正在build立一个tableview部分的页脚。 页脚的高度将在heightForFooterInSection指定,所以在viewForFooterInSection我想只是添加子视图,并指定页脚视图应填充任何页脚高度指定(此页脚大小将dynamic)。 因此,我使用CGRectZero作为初始框架并告诉页脚视图展开以填充其父视图。 – (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero]; footerView = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; footerView = [UIColor greenColor]; return footerView; } 这按预期工作 – 表视图的页脚完全填充绿色视图。 但是现在我想添加一个UITextView到页脚。 文本视图应填充相同的空间,但留下5点边界: { UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero]; footerView = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; footerView = [UIColor greenColor]; UITextView *textView = [[UITextView alloc] initWithFrame:CGRectInset(footerView.frame, 5, […]
我在一个旧项目的VC(无故事板,纯代码)中获得了以下代码: – (void)viewDidLoad { [super viewDidLoad]; self.mapView = [[MKMapView alloc] initWithFrame:CGRectInset(self.view.frame, 10, 10) ]; [self.view addSubview:self.mapView]; self.view.backgroundColor = [UIColor redColor]; self.mapView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; self.view.translatesAutoresizingMaskIntoConstraints = NO; // <— this line } 如果我评论最后一行,从纵向到横向或者其他方式的旋转是在ios8下大约3秒钟 ! 此外,偶尔在随机时间无法分配渲染缓冲区存储! 出现错误。 如果我不评论,几乎是瞬间的( 0.7秒 )。 看来只是和mapviews有关,其他视图/ VC才能正常旋转。 在ios7下,在任何情况下,旋转都是快速的。 为什么? 为什么只有mapview受到影响? 编辑:显然,autoresizingmask是错误的。 如果在viewDidLoad我将其值设置为none,并手动更改在willRotate中的框架,它工作得很快。
在阅读了关于UIView在SO和developer.apple.com上的autoresizingMask ,我仍然不清楚它的目的是什么。 什么情况下设置这个属性是必要的?
我使用下面的代码使用UINavigationBar的自定义标题视图: // Set a label to the nav bar THLabel *titleLabel = [[THLabel alloc] init]; titleLabel.text = @"Test"; titleLabel.font = [UIFont fontWithName:APP_FONT size:22.0]; titleLabel.frame = CGRectMake(0, 0, 100, 30); titleLabel.textAlignment = NSTextAlignmentCenter; titleLabel.textColor = CUSTOM_LIGHT_BLUE; titleLabel.strokeColor = kStrokeColor; titleLabel.strokeSize = kStrokeSize; self.navigationItem.titleView = titleLabel; 问题是,当呈现一个新的视图控制器,然后返回到原始视图控制器此自定义视图转移,然后重新居中。 请观看video以进行演示。 请点击此处查看video: https : //www.youtube.com/watch?v = 961CCVQmpJM&feature=youtu.be 我已禁用导航控制器的每个子视图的自动调整,包括故事板和每个视图控制器的代码: // Set […]
有没有办法使用自动调整掩码来移动我的内容,使删除button不覆盖它? 谷歌search告诉我,我需要在我的子视图上设置UIViewAutoresizingFlexibleRightMargin的UIViewAutoresizingFlexibleRightMargin确定的面具。 在我看来,像UIViewAutoresizingFlexibleWidth实际上会更有意义; 尽pipe我已经尝试过了,但都没有成功。 我想缩小的视图只是一个标签,是单元格的contentView的子视图。 我不确定contentView本身是否会在删除button显示时自动resize; 但似乎不是; 否则我的autoresizing面具应该已经工作。 如果存在删除button不会导致任何视图的大小; 无论如何,我可以手动做到这一点?
我有一个应用程序,我正在尝试转换和准备新的iPhone 5的屏幕大小。 我添加了新的Default-568h @ 2x图像,并将视图设置为在IB中自动resize。 视图看起来是正确的,他们伸展到填满屏幕,但我放在底部的任何button都是不可点击的。 就像有一条看不见的底线,旧iPhone屏幕将停止在哪里,并且该线以下的任何东西都是无法点击的。 如果我把这个button放在这一行上,顶部是可点击的,但底部不是。