- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我处于两难境地,使用哪种方法来设置自定义 UIViews 的框架,其中包含许多 subview ,并且仍然有动画并自动调整到旋转。当我创建一个新的 View Controller 时,我通常会在 loadView 或 viewDidLoad 中分配我的自定义 View ,例如:
-(void)viewDidLoad
{
[super viewDidLoad];
detailView = [[DetailView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
detailView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.view = detailView;
}
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
label = [[UILabel alloc] initWithFrame:CGRectZero];
[self addSubview:label];
}
}
-(void)layoutSubviews
{
[super layoutSubviews];
label.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
}
-(void)animateLabel
{
[UIView animateWithDuration:0.4f animations:^
{
label.transform = CGAffineTransformMakeTranslation(100, 100);
}];
}
最佳答案
我最近开始覆盖 viewDidLayoutSubviews
(很多次而不是 viewWillAppear
)在我的 UIViewControllers
.
是 viewDidLayoutSubviews
被称为旋转。 (来自评论)
该方法在所有内部布局已经完成后触发,因此应该设置所有最终帧,但仍然给您时间在 View 可见之前进行调整,并且动画不应该有任何问题,因为您不是已经在动画 block 内。
View Controller .m
- (void)viewDidLayoutSubViews {
// At this point I know if an animation is appropriate or not.
if (self.shouldRunAnimation)
[self.fuView runPrettyAnimations];
}
- (void)runPrettyAnimations {
// My animation blocks for whatever layout I'd like.
}
- (void)layoutSubviews {
// My animations are not here, but non animated layout changes are.
// - Here we have no idea if our view is visible to the user or may appear/disappear
// partway through an animation.
// - This also might get called far more than we intend since it gets called on
// any frame updates.
}
关于iphone - 具有方向和动画的自定义 UIView layoutSubviews?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15611008/
代码: class ViewController: UIViewController{ var button = CustomButton() override func viewDi
我正在尝试重新定位我的 UIBarButtonItem,使其边缘紧靠 UINavigationBar 的顶部和右侧。我找到了 this accepted answer关于如何做到这一点,但我真的不明白
我刚刚在iOS版的Facebook SDK中看到,他们在layoutSubviews方法的结尾而不是开头调用[Super layoutSubviews];。。据我所知,我们应该始终把它作为第一条线来做
我有一些 Layer1作为子层附加到我的自定义 View 的根层。 然后,当我改变了 Layer1 的变换时,发生了一件有趣的事情。内touchesMoved , layoutSubviews 被调用
我有一个包含 2 个 subview 的 View - collectionView 和自定义 View 。我想设置一个操作在布置 2 个 View 后运行,但layoutSubViews 运行了两次
我有一个 View (LSTabBarView),它支持使用以下方法插入/删除新元素: - (void)insertItem:(LSTabItem *)item atIndex:(NSUInteger
我正在用 Swift 开发一个 iOS 应用程序,我有一个带有自定义 UITableViewCells 的 UITableView,通过覆盖 在单元格的左侧和右侧有间距layoutSubviews()
对于 Xcode 6 和 iOS8,我的应用程序出现了奇怪的问题。问题出在我用 xib 文件制作的自定义 UITableViewCell 中。在 iOS8 模拟器上,layoutSubviews 方法
问题“When does layoutSubviews get called?”中列出了几种情况: 调整了父 View 的大小 设备旋转 还有吗? 如果不需要处理,对于UITableView,我们可以
我希望标签的字体大小与屏幕大小成正比。我已将 UILabel 类子类化以实现此目的: @IBDesignable class MyCustomLabel: UILabel { override
当我的主视图旋转时,我想重新安排 subview ,所以在我的 ViewController 中,我重写了 willAnimateRotationToInterfaceOrientation:(UII
正如标题所说:我创建一个空的 UIView 子类并向其中添加一个 subview ,创建一个空的layoutSubviews 方法并在其中添加一个断点。然后我构建项目,并在layoutSubviews
我正在将我的 iOS 6 应用程序转换到 iOS 7 并且遇到了一些问题。 在 iOS 6 中,将调用不再调用的方法。 我的类继承自 UIAlertView。 例如: - (void)layoutSu
我处于两难境地,使用哪种方法来设置自定义 UIViews 的框架,其中包含许多 subview ,并且仍然有动画并自动调整到旋转。当我创建一个新的 View Controller 时,我通常会在 lo
我有许多自定义 UIView。 我经常发现自己在自定义 View 的初始化中初始化属性,但我也在那里设置了框架。 我通常将 layoutSubviews 留空。如果我不希望我的 View 边界发生变化
我创建了一个自定义 UITableViewCell 类。在该类中,我根据单元格内部的图像调整单元格的高度。 - (void)layoutSubviews { [super layoutSubv
我正在为我的应用程序创建一个设置 View ,该 View 中有一个 UITableView。我正在创建自定义单元格以满足我的需要,但我遇到了问题 - 只有最后一个单元格正在获取 [layoutSub
我在我的 ViewController 中实现了 commitEditingStyle 方法,这样我就可以在适当的单元格上滑动以将其删除。但是当我在 Debug模式下在一个单元格上滑动时,layout
使用 Xcode 4.2/iOS5.0 我有一个 viewController 和一个关联的 viewController.xib。 viewController 被设置为 .xib 文件的所有者。它
我正在尝试为某些 subview 创建自定义布局。我的文件是一个 ViewController,因此我必须将其 View 称为 self.view。 subview 是 self.view 的 sub
我是一名优秀的程序员,十分优秀!