ios – Autolayout没有传递给子层

ios – Autolayout没有传递给子层,第1张

概述我使用Xamarin for iOS v5.8.3(build 3). 我在另一个UIView上添加了一个带有CAGradientLayer的UIView: public static void AddGradientView (CGColor color1, CGColor color2, UIView view) { UIView gradientView = new UIVi 我使用Xamarin for iOS v5.8.3(build 3).

我在另一个UIVIEw上添加了一个带有CAGradIEntLayer的UIVIEw:

public static voID AddGradIEntVIEw (CGcolor color1,CGcolor color2,UIVIEw vIEw) {        UIVIEw gradIEntVIEw = new UIVIEw (vIEw.Bounds);        gradIEntVIEw.Backgroundcolor = UIcolor.Green;        gradIEntVIEw.autoresizingMask = UIVIEwautoresizing.All;        CAGradIEntLayer gradIEnt = new CAGradIEntLayer ();        gradIEnt.Frame = gradIEntVIEw.Bounds;        gradIEnt.colors = new CGcolor[]{ color1,color2 };        gradIEntVIEw.Layer.InsertSublayer (gradIEnt,0);        vIEw.AddSubvIEw (gradIEntVIEw);}

但结果是这样的:

问题是渐变层,他的框架不适合想要的UIVIEw.
我认为这是一个autolayout问题.

任何人都可以对我说些什么吗?

提前致谢!

P.S
上面的代码用Objective sharpIE写的但是iOS开发人员可以很容易理解;)

解决方法 CALayer及其子类不受autolayout的影响.

要更新图层框架,如果要从视图控制器更新a,或者从自定义UIVIEw子类更新layoutSubvIEws,则可以使用vIEwDIDLayoutSubvIEws.

从UIVIEwController:

- (voID)vIEwDIDLayoutSubvIEws{     [super vIEwDIDLayoutSubvIEws];     // you need to store a reference to the gradIEnt layer and gradIEnt vIEws or fetch them from the sublayers and subvIEws     self.gradIEnt.frame = self.gradIEntVIEw.bounds;}

UIVIEw子类:

- (voID)layoutSubvIEws{     [super layoutSubvIEws];     self.gradIEnt.frame = self.bounds;}
总结

以上是内存溢出为你收集整理的ios – Autolayout没有传递给子层全部内容,希望文章能够帮你解决ios – Autolayout没有传递给子层所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1008046.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存