0

3 つのビューを持つ基本的なアプリがあり、最初のビューである初期ビューには、320 x 460 (320 x 480 も試しました) のイメージを含む ImageView があり、ビューの背景イメージとして機能します。ステータスバーが有効になります。携帯電話でアプリをテストすると、アプリが最初に読み込まれたときに画像のサイズが変更され、最終的には画面に合わせて拡大縮小されます。画像サイズの何が間違っていますか? 画像のサイズ変更が原因でアプリが最初に読み込まれたときに、最初のビューが「ジャンプ」しているように見えますが、ユーザーに問題があると思わせたくありません。

これが私のストーリーボードです:

<objects>
            <placeholder placeholderIdentifier="IBFirstResponder" id="vni-Jh-JGC" userLabel="First Responder" sceneMemberID="firstResponder"/>
            <viewController id="gWY-GQ-C35" sceneMemberID="viewController">
                <view key="view" contentMode="scaleToFill" id="e8S-C8-ddz">
                    <rect key="frame" x="0.0" y="20" width="320" height="460"/>
                    <autoresizingMask key="autoresizingMask"/>
                    <subviews>
                        <imageView autoresizesSubviews="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="targetbg.png" id="s7d-M3-VIr">
                            <rect key="frame" x="-1" y="0.0" width="320" height="460"/>
                            <autoresizingMask key="autoresizingMask"/>
                            <rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/>
                        </imageView>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="uF7-4u-0PX">
                            <rect key="frame" x="14" y="417" width="300" height="38"/>
                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                            <state key="normal" image="newsubmit.png">
                                <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
                            </state>
                            <state key="highlighted">
                                <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                            </state>
                            <connections>
                                <segue destination="2" kind="modal" id="Qkv-0y-8Sh"/>
                            </connections>
                        </button>
                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Blake Design Group" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="Am2-mX-6Yv">
                            <rect key="frame" x="22" y="386" width="280" height="21"/>
                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                            <fontDescription key="fontDescription" type="system" pointSize="10"/>
                            <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="version 2.0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="Buw-jD-jIs">
                            <rect key="frame" x="16" y="374" width="280" height="21"/>
                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                            <fontDescription key="fontDescription" type="system" pointSize="10"/>
                            <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                    </subviews>
                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
                </view>
                <nil key="simulatedTopBarMetrics"/>
                <simulatedOrientationMetrics key="simulatedOrientationMetrics"/>
                <simulatedScreenMetrics key="simulatedDestinationMetrics"/>
            </viewController>
        </objects>
4

2 に答える 2

0

あなたがスプラッシュスクリーンを作成しようとしていると仮定しますこれが私のスプラッシュスクリーンをiPhoneとiPadで動作させるために私がしたことです

  • UIView私は(私のスプラッシュビュー)を作成しませんUIViewController
  • まず、サイズ320*460のビューを作成します
  • これにaを追加するUIImageViewと、imageViewのサイズは320 * 460になり、yは-10に設定されます。
  • UIImageViewおよびコンテナのUIViewサイズ変更マスクは0に設定されています(サイズ変更はまったくありません)
  • UIImageViewコンテンツがに設定されていますcenter
  • willMoveToSuperview私は以下を持っています

    - (void)willMoveToSuperview:(UIView *)newSuperview
    {  
        BOOL isiPad = UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM();
    
        if(isiPad)
        {
            mainImage.image = [UIImage newImageFromResource:@"Default-Portrait~ipad.png"];            
        }
        else {
            mainImage.image = [UIImage newImageFromResource:@"Default"];                    
        }
    }
    
  • didFinishLaunchingWithOptions私はこのビューを作成し、に追加しますself.window.rootViewController

    [self.window.rootViewController.view addSubview:splashScreen];
    splashScreen.frame = self.window.rootViewController.view.bounds;
    splashScreen.autoresizingMask = AUTORESIZE_ALL;
    [splashScreen initialize];
    

これは、オリエンテーションとiPadとiPhoneの両方で私と一緒に機能しました。

注:同じdefault.png画像を使用してスプラッシュを作成しました

于 2012-06-16T18:45:48.497 に答える
0

私はついにそれを理解しました、そしてそれはとても簡単でした。私の起動画像は 480 で、背景画像は 460 でした。これにより、ロード中に短いオーバーラップが発生し、サイズ変更/再スケーリングのように見えるものが作成されました。今日学んだ良い教訓。

于 2012-06-16T21:25:52.283 に答える