プログラムで作成し、プログラムで作成してビューに追加したstack_viewに追加しようとしています。 これはコードです:プログラムで追加されたビューは表示されません
の.h
@interface ViewController : UIViewController
@property (strong, nonatomic, nullable) UIStackView * stack;
@end
.M
@implementation viewController
@synthesize stack;
- (void) viewDidLoad {
[super viewDidLoad];
CGRect * vframe = self.view.frame;
// - Option 1
stack = [[UIStackView alloc] initWithFrame:CGRectMake(vframe.origin.x, 100,vframe.size.width,300)];
stack.axis = UILayoutConstraintAxisHorizontal;
stack.aligment = UIStackViewAligmentTop;
stack.distribution = UIStackViewDistributionFill;
[self.vew addSubview:stack];
// Option 2
// stack.traslateAutorezisingMaskIntoConstraints = NO;
// [stack.leadingAnchor constraintsEqualToAnchor: self.view.leadingAnchor].active = YES;
// [stack.topAnchor constraintsEqualToAnchor: self.view.topAnchor constant: 100].active = YES;
UIView * pView = [[UIView alloc] init];
pView.backgroundColor = [UIColor blueColor];
[stack addArrangedSubview:pView];
}
@end
このコードは(私はオプション2を証明しようとした、全くのビューが表示されませんコードにコメントされているようです)、どちらもうまくいきません。スタックに挿入されると、そのビューの分布が「塗りつぶし」なので、スタックのサイズを取得することは想定されていません。これは、フレーム= CGRectMakeRect(0,0、self.view.frame.size.width、100)でPviewを定義した場合でも、どちらも動作しません。
私が間違っていることを誰にでも教えてください。
EDIT:私はすでに、コードでスペルミスを修正しました(CGRectの*とself.viewの代わりにself.vew)。私は手動でコードをコピーしていたときにこれらの間違いを犯しました。コードをコピー&ペーストしませんでした。それらを作っている理由THAのであり、元のコードがviewDidLoad
でも
あなたの答えAndrew McKinleyに感謝します。私はあなたが私に示唆していることを行います。これは私の発見です:2)固定サイズ(CGRectMake(100,100,100,100))のpviewのみをテストし、self.viewに追加すると、 b)固定サイズ(CGRectMake(100,100,100,100))のstackViewのみを作成し、self.viewに追加すると機能しません。また、そのサイズがviewDidAppearの100の幅と100の高さであることを確認しています。あなたが言及したタイプミスが元のコードではなかったので、そのミスを修正するために質問を編集します。どうしたらいいの? – Airel
@AirelはCapture View Heirachyでそれを見ることができますか? viewDidAppearには、== self.viewというスーパービューがありますか?この時点でpViewを追加するべきではありません。私たちは、UIStackViewがviewControllerに追加されたかどうかを確認しています。 –
私はすでにキャプチャビュー階層内にスタックを見ており、それはself.viewであるスーパービューです。私は[stack addArrangedSubview:pView]を実行したときに、PviewがスタックビューのArrangedSubviews配列に正しく追加されているかどうかを確認するために、この同じ方法を使用します。 – Airel